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