<´ÙÀ̾ó·Î±×¿¡ ÇÁ¸°Æ® ±â´ÉÀ» ³ÖÀ¸·Á¸é>

 ´ÙÀ̾ó·Î±× ±â¹ÝÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª ºä/µµÅ¥¸ÕÆ® ±¸Á¶ÀÇ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ±âº»À¸·Î Á¦°øµÇ´Â ÇÁ¸°Æ® ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í, ´ÙÀ̾ó·Î±× ¾È¿¡ ÇÁ¸°Æ® ±â´ÉÀ» ±¸ÇöÇÏ°í ½Í½À´Ï´Ù.  

 MFC´Â ±âº»ÀûÀ¸·Î OnDraw()¸¦ ÀÛ¼ºÇÏ¸é µµÅ¥¸ÕÆ®¸¦ ÇÁ¸°Æ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í µµÅ¥¸ÕÆ®/ºä ±¸Á¶¿¡¼­´Â ÇÁ¸°Æ® ¹Ì¸® º¸±â ±â´ÉÀ» Æ÷ÇÔÇØ ¸î °¡Áö À¯¿ëÇÑ ÇÁ¸°Æ® °ü·Ã ±â´Éµµ Á¦°øÇÕ´Ï´Ù. ±×·¯³ª ±âÁ¸ÀÇ ÇÁ¸°Æ® ±â´ÉÀ» ÀÌ¿ëÇÏÁö ¾Ê°í ´ÙÀ̾ó·Î±×¿¡¼­ ÇÁ¸°Æ®ÇÏ°íÀÚ ÇÒ °æ¿ì¿¡´Â ¸ÕÀú ÇÁ¸°Æ®¿¡ »ç¿ëÇÒ ÆùÆ®¸¦ »ý¼ºÇÏ°í (¸¸ÀÏ ±×¸²À» ÇÁ¸°Æ®ÇÏ°íÀÚ ÇÑ´Ù¸é ÇÊ¿ä¾ø´Ù) ÇÁ¸°ÅÍÀÇ DC ÇÚµéÀ» ¾ò±â À§ÇØ CPrintDialog °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ÇÁ¸°Æ® ´ÙÀ̾ó·Î±×¸¦ ¶ç¿ì°Å³ª GetDefaults()¸¦ È£ÃâÇØ ÇÁ¸°ÅÍ DCÀÇ ÇÚµéÀ» ¾ò½À´Ï´Ù. ÀÌ·¸°Ô ¾òÀº ÇÚµéÀ» ÀÌ¿ëÇØ CDC °´Ã¼¸¦ »ý¼ºÇÏ°í CDCÀÇ ¸â¹ö ÇÔ¼öÀÎ StartDoc(), StartPage()¸¦ È£ÃâÇÑ ´ÙÀ½ ¸¶Áö¸·À¸·Î TextOut()À̳ª BitBlt() µîÀÇ ÇÔ¼ö¸¦ »ç¿ëÇØ ÇÁ¸°Æ®ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦ Äڵ带 Âü°íÇϼ¼¿ä.

        // ...
        CFont font;
        font.CreateFont(-200,0,0,0,100,FALSE,FALSE,
            0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
            CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
            NULL,"±¼¸²");
        CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_RETURNDC, NULL);
        dlg.DoModal();
        //dlg.GetDefaults( );
        if(!dlg.m_pd.hDC){
            MessageBox("À¯È¿ÇÏÁö ¾ÊÀº ÇÁ¸°ÅÍ ÇÚµéÀÔ´Ï´Ù!");
            font.DeleteObject();
            return;
        }
        CDC * pDC = new CDC;
        pDC->Attach(dlg.m_pd.hDC);
        pDC->StartDoc("MyDocument");
        pDC->StartPage();
        CFont * pFont;
        pFont = pDC->SelectObject(&font);
        pDC->TextOut(10,10,"¸¶¼Ò µ¶ÀÚ ¿©·¯ºÐ ¾È³çÇϼ¼¿ä?");
        pDC->SelectObject(pFont);
        pDC->EndPage();
        pDC->EndDoc();
        pDC->DeleteDC();
        pDC->Detach();
        delete pDC;
        font.DeleteObject();
        // ...

 

<üũ ¸®½ºÆ®¹Ú½º¸¦ ÅÛÇø´¿¡ ¿Ã¸®±â>

 MFC Ŭ·¡½º Áß CCheckListBox¸¦ ÀÌ¿ëÇØ ´ÙÀ̾ó·Î±× ÅÛÇø´¿¡ üũ ¸®½ºÆ®¹Ú½º¸¦ ¿Ã·Á³õ°í ½Í½À´Ï´Ù.  

 CCheckListBox´Â CListBox Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº Ŭ·¡½º·Î ´ÙÀ̾ó·Î±× ¿¡µðÅÍÀÇ ÄÁÆ®·Ñ ÆÈ·¹Æ®¿¡´Â º¸ÀÌÁö ¾ÊÁö¸¸, ¸®½ºÆ®¹Ú½º¸¦ ¿Ã·Á³õÀº ÈÄ ¸î °¡Áö¸¸ ÄÚµùÇØ ÁÖ¸é ¸®½ºÆ®¹Ú½º¸¦ üũ ¸®½ºÆ®¹Ú½º·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù.
 À̶§ ÁÖÀÇÇÒ »çÇ×Àº <È­¸é 1>°ú °°ÀÌ ¿É¼ÇÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¸®½ºÆ®¹Ú½ºÀÇ ¼Ó¼º ´ÙÀ̾ó·Î±×¿¡¼­ Owner draw¸¦ 'Fixed'·Î ¼±ÅÃÇÑ ´ÙÀ½ Has string¿¡ üũÇÕ´Ï´Ù. ±×·± ÈÄ¿¡ Ŭ·¡½º À§Àúµå¸¦ ÀÌ¿ëÇØ ´ÙÀ̾ó·Î±× Ŭ·¡½º¸¦ ¸¸µé¾î ÁÖ°í ÄÁÆ®·Ñ°ú ¸ÊÇεǴ º¯¼ö¸¦ ¸¸µé¾î ÁÝ´Ï´Ù. ±×¸®°í CListBox¸¦ ¼±ÅÃÇÏ¸é µË´Ï´Ù(<È­¸é 2>). Ŭ·¡½º À§Àúµå°¡ ¸¸µé¾î ÁØ Çì´õ ÆÄÀÏÀ» º¸¸é ´ÙÀ½°ú °°Àº Äڵ带 ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù.

    // dialog Data
        //{{AFX_DATA(CTestDlg)
        enum { IDD = IDD_DIALOG1 };
        CListBox    m_list;
        //}}AFX_DATA

    ÀÌ°ÍÀ» ´ÙÀ½°ú °°ÀÌ °íÃÄ ÁÝ´Ï´Ù.

    // dialog Data
        //{{AFX_DATA(CTestDlg)
        enum { IDD = IDD_DIALOG1 };
        CCheckListBox    m_list;
        //}}AFX_DATA

    ±×·± ÈÄ AddString() µîÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ¸®½ºÆ®¹Ú½º¸¦ ä¿ö ³ÖÀ¸¸é µË´Ï´Ù.

                                        < È­¸é 1 >

                                < È­¸é 2 >

<Àüü È­¸é º¸±â ¿É¼Ç ¸¸µé±â>  

 °³¹ßÅøÀ̳ª ±×·¡ÇÈ ÇÁ·Î±×·¥À» º¸¸é Àüü È­¸é º¸±â¶ó´Â ¿É¼ÇÀÌ ÀÖ°í, ¼±ÅÃÇϸé ÇÁ·Î±×·¥ Å©±â°¡ ½ºÅ©¸°°ú µ¿ÀÏÇØÁö¸ç ĸ¼Ç¹Ù°¡ ¾ø¾îÁý´Ï´Ù. ÀÌ·± ±â´ÉÀ» ¾î¶»°Ô ±¸ÇöÇÏ´ÂÁö ¾Ë°í ½Í½À´Ï´Ù.

 °¡±î¿î ½Ç·Ê·Î Àüü È­¸é º¸±â ±â´ÉÀ» ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ ºñÁÖ¾ó C++ °³¹ßȯ°æ¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù. È­¸éÀ» ÃÖ´ëÇÑ ÀÌ¿ëÇØ Äڵ带 ÆíÁýÇÒ ¼ö ÀÖ´Â ÀÌ ±â´ÉÀº Äڵ带 ÆíÁýÇÏ´Â µ¥ ºÒÇÊ¿äÇÑ À©µµ¿ì ¿ä¼Ò¸¦ Á¦°ÅÇÔÀ¸·Î½á ÆíÁýÀÇ ÆíÀǸ¦ µ½½À´Ï´Ù.
 ±¸Çö ¹æ¹ýÀº À©µµ¿ì¿¡´Â ¿©·¯ °¡Áö ½ºÅ¸ÀÏÀÌ Á¸ÀçÇÑ´Ù´Â °ÍÀ» Âø¾ÈÇÑ´Ù¸é ¸Å¿ì °£´ÜÇÕ´Ï´Ù. Áï, »ç¿ëÀÚ°¡ Àüü È­¸é º¸±â ¸í·ÉÀ» ¼±ÅÃÇßÀ» ¶§ À©µµ¿ì ½ºÅ¸ÀÏÀ» ¹Ù²ãÁØ ÈÄ À©µµ¿ì¸¦ È­¸éÀÇ Å©±â¿¡ ¸Â°Ô Á¶Á¤ÇØ ÁÖ¸é µË´Ï´Ù.

 

<¸ÞÀÎÇÁ·¹ÀÓÀÌ Â÷ÁöÇÏ´Â ÇàÀÇ ¼ö¸¦ ãÀ¸·Á¸é>

 ÃÖ»óÀ§ ¸Þ´ºÀÎ ¸ÞÀÎÇÁ·¹ÀÓ ¸Þ´º°¡ Â÷ÁöÇÏ´Â ÇàÀÇ ¼ö¸¦ °è»êÇÏ°í ½Í½À´Ï´Ù.

 »¬¼À°ú ³ª´°¼À¸¸À¸·Î ÀÌ ¹®Á¦¸¦ °£´ÜÈ÷ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÕÀú ¸ÞÀÎÇÁ·¹ÀÓ°ú Ŭ¶óÀ̾ðÆ® ¿µ¿ªÀÇ ³ôÀ̸¦ °è»êÇÕ´Ï´Ù. ±× ´ÙÀ½ ÇÁ·¹ÀÓÀÇ ³ôÀÌ¿¡¼­ Ŭ¶óÀ̾ðÆ® ¿µ¿ªÀÇ ³ôÀÌ, ÇÁ·¹ÀÓÀÇ Å׵θ®, ĸ¼ÇÀ» »« ÈÄ ¸¶Áö¸·À¸·Î ¸Þ´º¹ÙÀÇ ³ôÀÌ·Î ³ª´©¸é µË´Ï´Ù.

    int CMainFrame::GetMenuRows() const {
    CRect rcFrame, rcClient;
    GetWindowRect(rcFrame);
    GetClientRect(rcClient);

    return(rcFrame.Height() - rcClient.Height() -
          ::GetSystemMetrics(SM_CYCAPTION) -
          (::GetSystemMetrics(SM_CYFRAME)*2))/
          ::GetSystemMetrics(SM_CYMENU);