TN021: ¸í·É ¹× ¸Þ½ÃÁö ¶ó¿ìÆÃ

ÀÌ ³ëÆ®¿¡¼­´Â ¸í·É ¶ó¿ìÆÃ ¹× µð½ºÆÐÄ¡ °ÇÃà »Ó¸¸ ¾Æ´Ï¶ó ÀÏ¹Ý Ã¢ ¸Þ½ÃÁö ¶ó¿ìÆÃ¿¡ °í±Þ ÁÖÁ¦¡£

¼³¸í¼­ ¸¦ ÂüÁ¶ ÇϽʽÿÀ Visual c + + ÇÁ·Î±×·¡¸ÓÀÇ ÀϹݿ¡ ´ë ÇÑ ³»¿ëÀº ¿©±â¿¡¼­ ¼³¸íÇÑ ¾ÆÅ°ÅØÃ³ ƯÈ÷ Windows ¸Þ½ÃÁö, ÄÁÆ®·Ñ ¾Ë¸² ¹× ¸í·É »çÀÌÀÇ ±¸º° ÇÕ´Ï´Ù. ÀÎ¼â µÈ ¹®¼­¿¡¼­ ¼³¸í ÇÏ´Â ¹®Á¦¿¡ ¸Å¿ì Àͼ÷ÇÑ ÇÏ °í¸¸ ¸Å¿ì °í±Þ ÁÖÁ¦¸¦ ÇØ°áÀÌ Âü°í °¡Á¤ ÇÕ´Ï´Ù.

¸í·É ¶ó¿ìÆÃ ¹× µð½ºÆÐÄ¡ MFC 1.0 ±â´É ÁøÈ­ MFC 2.0 ¾ÆÅ°ÅØÃ³

Windows´Â WM_COMMAND ¸Þ½ÃÁö ¾Ë¸² ¸Þ´º ¸í·É ¾×¼¿·¯·¹ÀÌÅÍ Å°, ´ëÈ­ »óÀÚ ÄÁÆ®·Ñ ¾Ë¸²À» Á¦°ø ÇÏ´Â ¿À¹ö ·Îµå´Â¡£

CWnd ¿¡ ¸í·É 󸮱â (¿¹¸¦ µé¾î, "OnFileNew")¸¦ Çã¿ë ÇÏ ¿© Á¶±Ý¿¡ ³»Àå µÈ MFC 1.0 ƯÁ¤ WM_COMMAND¿¡ ´ë ÇÑ ÀÀ´ä¿¡¼­ È£Ãâ Çϴ Ŭ·¡½º ÆÄ»ý. ÀÌ ¸Þ½ÃÁö ¸Ê¿¡ ¶ó°í ÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶¿Í ÇÔ²² ºÙ¾îÀÖ´Ù ±×¸®°í ¸Å¿ì °ø°£ È¿À²ÀûÀÎ ¸í·É ¸ÞÄ¿´ÏÁò¿¡ °á°ú¡£

MFC 1.0´Â ¶ÇÇÑ ¸í·É ¸Þ½ÃÁö¿¡¼­ ÄÁÆ®·Ñ ¾Ë¸²À» ºÐ¸®¿¡ ´ë ÇÑ Ãß°¡ ±â´ÉÀ» Á¦°ø ÇÕ´Ï´Ù. ¸í·É idÀÔ´Ï´Ù. ¸í·É ¶ó°íµµ ÇÏ´Â 16 ºñÆ® ID·Î Ç¥½Ã µË´Ï´Ù. ¸í·É CFrameWnd ¿¡¼­ ÀϹÝÀûÀ¸·Î ½ÃÀÛ (¿¹: ¸Þ´º ¼±Åà ¶Ç´Â ¹ø¿ªµÈ °¡¼Ó±â) ´Ù¾ç ÇÑ ´Ù¸¥ â¿¡ Àü´Þ ¹ÞÀ»¡£

´ÙÁß ¹®¼­ ÀÎÅÍÆäÀ̽º (MDI)ÀÇ ±¸Çö¿¡ ´ë ÇÑ Á¦ÇÑ µÈ Àǹ̿¡¼­ ¸í·É ¶ó¿ìÆÃÀ» »ç¿ë ÇÏ´Â MFC 1.0. (MDI ÇÁ·¹ÀÓ Ã¢ ¸í·ÉÀ» Ȱ¼º MDI ÀÚ½Ä Ã¢¿¡ À§ÀÓ ÇÕ´Ï´Ù.)

ÀÌ ±â´ÉÀº ÀϹÝÈ­ µÇ¾úÀ¸¸ç, ¸í·É °³Ã¼ (»Ó ¾Æ´Ï¶ó window °³Ã¼)ÀÇ ³ÐÀº ¹üÀ§¿¡ ÀÇÇØ ó¸® µÉ ¼ö ÀÖµµ·Ï MFC 2.0¿¡¼­ È®Àå ÇÕ´Ï´Ù. ±×°ÍÀº ´õ ¸¹Àº °ø½Ä Á¦°ø ¹× ¶ó¿ìÆÃ¿¡ ´ë ÇÑ È®Àå °¡´ÉÇÑ ¾ÆÅ°ÅØÃ³ ¸Þ½ÃÁö »Ó¸¸ ¾Æ´Ï¶ó ¸í·É 󸮸¦ À§ÇÑ »Ó¸¸ ¾Æ´Ï¶ó ¸í·ÉÀÇ ÇöÀç °¡¿ë¼ºÀ» ¹Ý¿µ Çϵµ·Ï UI °³Ã¼ (¿¹: ¸Þ´º Ç׸ñ ¹× µµ±¸ ¸ðÀ½ ´ÜÃß)¸¦ ¾÷µ¥ÀÌÆ® Çϱâ À§ÇÑ ¸í·É ´ë»ó ¶ó¿ìÆÃ Àç»ç¿ë¡£

¸í·É Id

¸í·É ¶ó¿ìÆÃ ¹× ¹ÙÀεù ÇÁ·Î¼¼½º¿¡ ´ë ÇÑ ¼³¸íÀº Visual c + + ÇÁ·Î±×·¡¸Ó °¡ÀÌµå ¸¦ ÂüÁ¶ ÇϽʽÿÀ. ±â¼ú Âü°í 20 ID ¸í¸í¿¡ ´ë ÇÑ Á¤º¸¸¦ Æ÷ÇÔ¡£

¿ì¸®´Â ¸í·É Id¿¡ ´ë ÇÑ ÀϹÝÀûÀÎ Á¢µÎ»ç "ID_"¸¦ »ç¿ëÇÕ´Ï´Ù. ¸í·É Id´Â gt; 0x8000 =. ¸Þ½ÃÁö ÁÙ ¶Ç´Â »óÅ ǥ½ÃÁÙ ¸í·É ¼³¸í ¹®ÀÚ¿­ ¸í·É ID¿Í µ¿ÀÏÇÑ Id »ç¿ë ÇÏ ¿© STRINGTABLE ¸®¼Ò½º ÀÎÁö Ç¥½Ã µË´Ï´Ù(&G).

ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸®¼Ò½º ID ¼ö ¸í·É ¿©·¯ Àå¼Ò¿¡ ³ªÅ¸³³´Ï´Ù.:

ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ忡¼­ ¸í·É ID ¼ö ¿©·¯ Àå¼Ò¿¡ ³ªÅ¸³³´Ï´Ù.:

ÇöÀç mfc ¸í·É Id¸¦ ÇÊ¿ä·Î ÇÏ´Â À¯ÀÏÇÑ ±¸Çö µÉ gt; = 0x8000´Â GOSUB ´ëÈ­/¸í·É ±¸Çö(&G)¡£

GOSUB ¸í·É, ´ëÈ­ »óÀÚ¿¡¼­ ¸í·É ¾ÆÅ°ÅØÃ³¸¦ »ç¿ë ÇÏ ¿©

¶ó¿ìÆÃ ¹× Ȱ¼ºÈ­ ¸í·ÉÀ» ¸í·É ¾ÆÅ°ÅØÃ³ ÇÁ·¹ÀÓ Ã¢, ¸Þ´º Ç׸ñ, µµ±¸ ¸ðÀ½ ´ÜÃß, ´ëÈ­ »óÀÚ ¸ðÀ½ ´ÜÃß, ±âŸ ÄÁÆ®·Ñ ¸·´ë ¹× ±âŸ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ¿ä¼Ò ¼ö¿ä¿Í °æ·Î ¸í·É¿¡ ¾÷µ¥ÀÌÆ® Çϰųª ±âº» ¸í·É ´ë»ó (ÀϹÝÀûÀ¸·Î ÁÖ ÇÁ·¹ÀÓ Ã¢)¿¡ Id¸¦ Á¦¾î Çϵµ·Ï ¼³°è¿Í ÇÔ²² Àß ÀÛµ¿ ÇÕ´Ï´Ù. ±× ÁÖ¿ä ¸í·É ´ë»ó ÀûÀý ÇÑ ´Ù¸¥ ¸í·É ´ë»ó °³Ã¼¿¡ ¸í·É ¶Ç´Â ÄÁÆ®·Ñ ¾Ë¸²À» ¶ó¿ìÆÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀûÀý ÇÑ ¸í·É id ´ëÈ­ ÄÁÆ®·ÑÀÇ ÄÁÆ®·Ñ ID¸¦ ÇÒ´ç ÇÏ´Â °æ¿ì ¸í·É ¾ÆÅ°ÅØÃ³ÀÇ Æ¯Â¡ ÁßÀÇ ÀϺΠ·ÎºÎÅÍ ÀÌÁ¡À» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù (¸ð´Þ ¶Ç´Â ¸ð´ú¸®½º) ´ëÈ­ »óÀÚ ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ Áö¿ø ¾Æ´Ï¹Ç·Î ÀÚµ¿À¸·Î, ¸î °¡Áö Ãß°¡ Äڵ带 ÀÛ¼º ÇØ¾ß ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ ¸ðµç ±â´ÉÀÌ Á¦´ë·Î ÀÛµ¿ ÇÏ·Á¸é¿¡ ´ë ÇÑ ¸í·É Id ¿©¾ß ÇÕ´Ï´Ù gt; 0x8000 =. ¶§¹®¿¡ ¸¹Àº ´ëÈ­ »óÀÚ °°Àº ÇÁ·¹ÀÓ Àü´Þ ¾òÀ» ¼ö ÀÖ´Â, °øÀ¯ ¸í·É ÇØ¾ß ÇÑ´Ù >´Â ºñ°øÀ¯ IDCÀÇ Æ¯Á¤ ´ëÈ­¿¡ ÀÖ¾î¾ß ÇÏ´Â ¹Ý¸é, 0x8000 = < 0x7FFF =¡£

ÀûÀý ÇÑ ¸í·É ID·Î ¼³Á¤ ÇÏ´Â ¹öưÀÇ IDC¿Í ÀϹÝÀûÀÎ ¸ð´Þ ´ëÈ­ »óÀÚ¿¡¼­ ÀÏ¹Ý ´ÜÃ߸¦ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ ´ÜÃ߸¦ ¼±Åà ÇÏ´Â °æ¿ì ´ëÈ­ (ÀϹÝÀûÀ¸·Î ÁÖ ÇÁ·¹ÀÓ Ã¢)ÀÇ ¼ÒÀ¯ÀÚ Ã³·³ ´Ù¸¥ ¸í·É ¸í·ÉÀ» °¡Á®¿É´Ï´Ù. ÀÌ ¶§¹®¿¡ ÀϹÝÀûÀ¸·Î »ç¿ë ÇÏ´Â ´Ù¸¥ ´ëÈ­ »óÀÚ (ù ¹øÂ° ´ëÈ­ GOSUB) GOSUB ¸í·É ¶ó°í¡£

¶ÇÇÑ ´ç½ÅÀÇ ´ëÈ­¿¡ CWnd::UpdateDialogControls ÇÔ¼ö¸¦ È£Ãâ ÇÏ °í ÁÖ ÇÁ·¹ÀÓ Ã¢ÀÇ ÁÖ¼Ò¸¦ Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â »ç¿ë ¶Ç´Â »ç¿ë ¾È ÇÔ ´ëÈ­ »óÀÚ ÄÁÆ®·Ñ ÇÁ·¹ÀÓ¿¡ ¸í·É 󸮱⸦ ÀÖ´ÂÁö ¿©ºÎ¿¡ µû¶ó. ÀÌ ÇÔ¼ö´Â È£Ãâ ÀÚµ¿À¸·Î ´ç½ÅÀ» À§ÇØ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ À¯ÈÞ ·çÇÁ¿¡¼­ ÄÁÆ®·Ñ ¸·´ë¿¡ ´ë ÇÑ ÇÏÁö¸¸ÀÌ ±â´ÉÀ»°¡Áö°í ÇϰíÀÚ ÇÏ´Â ÀÏ¹Ý ´ëÈ­ »óÀÚ¿¡ ´ë ÇÑ Á÷Á¢ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù.

ON_UPDATE_COMMAND_UI ¶ó°í

¸ðµç ½Ã°£ ÇÁ·Î±×·¥ÀÇ ¸ðµç ¸Þ´º Ç׸ñÀÇ È°¼ºÈ­ üũ »óŸ¦ À¯Áö ÇÏ´Â °è»ê ºñ¿ëÀÌ ¹®Á¦°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀÎ ¹æ¹ýÀº »ç¿ë/È®ÀÎ ¸Þ´º Ç׸ñ ÆË¾÷À» ¼±Åà ÇÏ´Â °æ¿ì¿¡ ÇÏ´Â °ÍÀÔ´Ï´Ù. CFrameWnd MFC 2.0 ±¸Çö WM_INITMENUPOPUP ¸Þ½ÃÁö¸¦ ó¸® ÇÏ °í ¸í·É ¶ó¿ìÆÃ ¾ÆÅ°ÅØÃ³¸¦ »ç¿ë ÇÏ ¿© ON_UPDATE_COMMAND_UI 󸮱⸦ ÅëÇØ ¸Þ´ºÀÇ »óÅ ȮÀΡ£

CFrameWnd ¶ÇÇÑ ÇöÀçÀÇ ¸Þ´º »óÅ ǥ½ÃÁÙ (ÀÏÄÃ¾î ¸Þ½ÃÁö ¼±)¿¡¼­ ¼±ÅÃÇÑ Ç׸ñÀ» ¼³¸í Çϱâ À§ÇØ WM_ENTERIDLE ¸Þ½ÃÁö 󸮡£

Visual c + +¿¡ ÀÇÇØ ÆíÁý ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸Þ´º ±¸Á¶´Â WM_INITMENUPOPUP ½Ã°£¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ÀáÀçÀûÀÎ ¸í·ÉÀ» ³ªÅ¸³»´Â µ¥ »ç¿ë µË´Ï´Ù. ON_UPDATE_COMMAND_UI 󸮱⠻óÅ ¶Ç´Â ÅØ½ºÆ® ¸Þ´º¸¦ ¼öÁ¤ Çϰųª (¿¹: ÆÄÀÏ MRU ¸ñ·Ï ¶Ç´Â OLE µ¿»ç ÆË¾÷ ¸Þ´º) °í±Þ »ç¿ë¿¡ ´ë ÇÑ ½ÇÁ¦·Î ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù ¸Þ´º ±¸Á¶ ¸Þ´º´Â ±×¸®±â Àü¿¡¡£

ON_UPDATE_COMMAND_UI ó¸®ÀÇ µ¿ÀÏÇÑ Á¤·Ä µµ±¸ ¸ðÀ½ (¹× ±âŸ ÄÁÆ®·Ñ ¸·´ë) ¼öÇà µË´Ï´Ù ¶§ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ À¯ÈÞ ·çÇÁ¸¦ ÀÔ·Â ÇÕ´Ï´Ù. ÄÁÆ®·Ñ ¸·´ë¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½º ¶óÀ̺귯¸® ÂüÁ¶ ¹× ±â¼ú ³ëÆ® 31 ÂüÁ¶¡£

Áßø µÈ ÆË¾÷ ¸Þ´º

´ç½ÅÀº ÆË¾÷¿¡¼­ ù ¹øÂ° ¸Þ´º Ç׸ñ¿¡ ´ëÇØ ON_UPDATE_COMMAND_UI 󸮱⠵Π°³ÀÇ ¼­·Î ´Ù¸¥ °æ¿ì¿¡ È£Ãâ ÇÏ´Â °ÍÀ» ÁÖÀÇÇÒ °Í ÀÌ´Ù Áßø µÈ ¸Þ´º ±¸Á¶¸¦ »ç¿ë ÇÏ´Â °æ¿ì¡£

¸ÕÀú ÀÚü ÆË¾÷¿¡ ´ë ÇÑ È£Ã⠵˴ϴÙ. ÀÌ ÀÌÈÄ Id¸¦ ÇÏÁö ¾Ê¾Æµµ ÆË¾÷ ¸Þ´º¿Í ÆË¾÷ÀÇ Ã¹ ¹øÂ° ¸Þ´º Ç׸ñÀÇ ID¸¦ »ç¿ë ÇÏ ¿© Àüü ÆË¾÷À» ÂüÁ¶ ÇÏ´Â ¿ì¸®. ÀÌ °æ¿ì CCmdUI °³Ã¼ÀÇ m_pSubMenu ¸â¹ö º¯¼ö¿¡ NULLÀÌ ¾Æ´Ñ °Í ÇÏ °í ÆË¾÷ ¸Þ´º¸¦ °¡¸®Åµ´Ï´Ù.

µÎ ¹øÂ° ÆË¾÷ ¸Þ´º Ç׸ñÀº ±×·Á¾ß Çϱ⠹ٷΠÀü¿¡ È£Ã⠵˴ϴÙ. ÀÌ °æ¿ì ID ´ÜÁö ù ¹øÂ° ¸Þ´º Ç׸ñÀ» ÂüÁ¶ ÇÏ °í CCmdUI °³Ã¼ÀÇ m_pSubMenu ¸â¹ö º¯¼ö´Â NULLÀÌ µÉ °ÍÀÔ´Ï´Ù.

ÀÌ ÆË¾÷ ¸Þ´º Ç׸ñ¿¡ ±¸ºÐÀ» »ç¿ë Çϸé ÇÏÁö¸¸ ÀϺΠ¸Þ´º ÀÎ½Ä Äڵ带 ÀÛ¼º ÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °¡Áø ÁßøµÈ ¸Þ´º¿¡¼­:

Filegt;
 ?? »õ·Î¿î >
 ?????? ½ÃÆ® (ID_NEW_SHEET)
 ?????? Â÷Æ® (ID_NEW_CHART)

ID_NEW_SHEET ¹× ID_NEW_CHART ¸í·ÉÀº ¼ö ÀÖ½À´Ï´Ù µ¶¸³ÀûÀ¸·Î Ȱ¼ºÈ­ ¶Ç´Â ºñȰ¼ºÈ­. µÑ Áß Çϳª¸¦ »ç¿ë ÇÏ´Â °æ¿ì "New" ÆË¾÷ ¸Þ´º¸¦ »ç¿ë ÇØ¾ß¡£

ID_NEW_SHEET (ÆË¾÷¿¡¼­ ù ¹øÂ° ¸í·É)¿¡ ´ë ÇÑ ¸í·É 󸮱â ó·³ »ý°åÀ» °Í:

void CMyApp::OnUpdateNewSheet (CCmdUI * pCmdUI)
{
 nbsp;? °æ¿ì (pCmdUI-> m_pSubMenu! = NULL)
 ?? {
 ?????? / / "»õ·Î ¸¸µé±â" ½ÃÆ®¿Í Â÷Æ®¿¡ ´ë ÇÑ Àüü ÆË¾÷ Ȱ¼ºÈ­
 ?????? BOOL bEnable m_bCanCreateSheet = | | m_bCanCreateChart;

/ / Ccmdui::enableÀÌ °æ¿ì ¾Æ´Ï¿ä op ±×·¡¼­ ¿ì¸®
 ?????? / / ±×°Í ¾î¶»°Ô ÇßÀ» ¼öÇà ÇØ¾ß ÇÕ´Ï´Ù.
 ?????? pCmdUI-> m_pMenu-> EnableMenuItem (pCmdUI-> m_nIndex,
 ?????????? MF_BYPOSITION | 
 ?????????????? (bEnable? MF_ENABLED: (MF_DISABLED (KO) | MF_GRAYED)));
 ?????? ¹Ýȯ;
 ?? }
 ?? / / ±×·¸Áö ¾ÊÀ¸¸é ±×³É »õ ½ÃÆ® ¸í·É
 ?? pCmdUI-> Enable(m_bCanCreateSheet);
}

ÀÏ¹Ý ¾÷µ¥ÀÌÆ® ¸í·É 󸮱â¿Í ºñ½ÁÇØ º¸ÀÌ´Â °ÍÀÌ ID_NEW_CHART¿¡ ´ë ÇÑ ¸í·É 󸮱â:

void CMyApp::OnUpdateNewChart (CCmdUI * pCmdUI)
{
 nbsp;? pCmdUI-> Enable(m_bCanCreateChart);
}

ON_COMMAND ¹× ON_BN_CLICKED

ON_COMMAND ¹× ON_BN_CLICKED ¿¡ ´ë ÇÑ ¸Þ½ÃÁö ¸Ê ¸ÅÅ©·Î µ¿ÀÏÇÕ´Ï´Ù. MFC ¸í·É ¹× Á¦¾î ¾Ë¸² ¶ó¿ìÆÃ ¸ÞÄ¿´ÏÁò¸¸ ¸í·É ID¸¦ »ç¿ë ÇÏ ¿© ¶ó¿ìÆÃÇÒ À§Ä¡¸¦ °áÁ¤ ÇÕ´Ï´Ù. 0 (BN_CLICKED)ÀÇ ÄÁÆ®·Ñ ¾Ë¸² Äڵ带 »ç¿ë ÇÏ ¿© ÄÁÆ®·Ñ ¾Ë¸²Àº ¸í·ÉÀ¸·Î ÇØ¼® Çϴ¡£

°í±Þ Âü°í: ½ÇÁ¦ »ç½Ç¿¡¼­ ¸ðµç ÄÁÆ®·Ñ ¾Ë¸² ¸Þ½ÃÁö ¸í·É 󸮱â üÀÎÀ» ÅëÇØ À̵¿ ÇÕ´Ï´Ù. µû¶ó¼­ ¹®¼­ Ŭ·¡½º¿¡¼­ EN_CHANGE ¸»¿¡ ´ë ÇÑ ÄÁÆ®·Ñ ¾Ë¸² 󸮱⸦ ÀÛ¼º ÇÏ´Â ´ç½ÅÀ» À§ÇØ ±â¼úÀûÀ¸·Î °¡´É ÇÏ´Ù. ÀÌÈÄÀÌ ±â´ÉÀºÀÇ ½Ç¿ëÀûÀÎ ÀÀ¿ë ÇÁ·Î±×·¥ ¸î °¡Áö, ¸¶¹ý»ç, ±â´ÉÀ» Áö¿ø ÇÏÁö ¾Ê½À´Ï´Ù ±â´É ±úÁö±â ½¬¿î Äڵ忡¼­ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù À̰ÍÀº ÀϹÝÀûÀ¸·Î ±ÇÀå ÇÏÁö¡£

Button ÄÁÆ®·ÑÀÇ ÀÚµ¿ ÇØÁ¦ »ç¿ë ¾È ÇÔ

´ëÈ­ »óÀÚ Ç¥½ÃÁÙ¿¡¼­ ¶Ç´Â ¾îµð¿¡¼­ È£ÃâÇÒ ¶§´Â CWnd::UpdateDialogControls ÀڽŸ¸ »ç¿ë ´ëÈ­ »óÀÚ¿¡¼­ ´ÜÃß ÄÁÆ®·ÑÀ» ¹èÄ¡ ÇÏ´Â °æ¿ì´Â ´ÜÃß ON_COMMAND ¶Ç´Â ON_UPDATE_COMMAND_UI 󸮱â´Â ¾ø½À´Ï´Ù ÀÚµ¿À¸·Î ºñȰ¼ºÈ­ µË´Ï´Ù ´ç½ÅÀ» À§ÇØ ÇÁ·¹ÀÓ ¿öÅ©¿¡ ÀÇÇØ Å뺸 µË´Ï´Ù. ¾î¶² °æ¿ì¿¡ ´ç½ÅÀÌ °ÍÀÔ´Ï´Ù Çʿ䰡 ¾ø½À´Ï´Ù 󸮱â, ÇÏÁö¸¸ °è¼Ó »ç¿ë ÇÏ·Á¸é ´ÜÃ߸¦ ¿øÇÒ °ÍÀÔ´Ï´Ù. À̰ÍÀ» ´Þ¼º ÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº (½±°Ô ClassWizard ÇÒ) ´õ¹Ì ¸í·É 󸮱⸦ Ãß°¡ ÇÏ´Â ±×°Í¿¡¼­ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê°í¡£

â ¸Þ½ÃÁö ¶ó¿ìÆÃ

´ÙÀ½ MFC Ŭ·¡½º ¹× Windows ¸Þ½ÃÁö ¶ó¿ìÆÃ ¹× ´Ù¸¥ ÁÖÁ¦ ¹ÌÄ¡´Â ±×µé¿¡ ¸î °¡Áö ´õ °í±Þ ÁÖÁ¦¸¦ ¼³¸í. ¿©±â¿¡ Á¤º¸¸¦ °£·«ÇÏ°Ô ¼³¸í¸¸ ÇÕ´Ï´Ù. °ø¿ë Api¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½º ¶óÀ̺귯¸® ÂüÁ¶ ¸¦ ÂüÁ¶ ÇϽʽÿÀ. ±¸Çö ¼¼ºÎ »çÇ׿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MFC ¶óÀ̺귯¸® ¼Ò½º Äڵ带 ÂüÁ¶ ÇϽʽÿÀ¡£

ÂüÁ¶ ÇϽʽÿÀ ±â¼ú ³ëÆ® 17 â Á¤¸®¿¡ ¸Å¿ì Áß¿ä ÇÑ ÁÖÁ¦¿¡ ´ë ÇÑ ¸ðµç CWnd-ÆÄ»ý Ŭ·¡½º¡£

CWnd ¹®Á¦

±¸Çö ¸â¹ö ÇÔ¼ö CWnd::OnChildNotify ¿¬°á ¶Ç´Â ¸Þ½ÃÁö, ¸í·É, ¹× ±×µéÀÇ ºÎ¸ð (¶Ç´Â "¼ÒÀ¯ÀÚ") À̵¿ ÇÏ´Â ÄÁÆ®·Ñ ¾Ë¸² Å뺸 ±×·¸Áö ¾ÊÀ¸¸é ÀÚ½Ä Ã¢ (ÄÁÆ®·Ñ)¿¡ ´ë ÇÑ °­·Â ÇÏ °í È®Àå °¡´ÉÇÑ ¾ÆÅ°ÅØÃ³¸¦ Á¦°ø ÇÕ´Ï´Ù. ¸¸¾à ÀÚ½Ä Ã¢ (/) ÀÚü¸¦ OnChildNotify ¶ó°í ¸ÕÀú ¸Å°³ º¯¼ö ¿øº» ¸Þ½ÃÁö ( MSG ±¸Á¶)¿¡¼­ °¡»ó ÇÔ¼ö´Â c + + CWnd °³Ã¼ÀÔ´Ï´Ù. ÀÚ½Ä Ã¢ ¸Þ½ÃÁö¸¦ ³»¹ö·Á µÎ°í, ±×°ÍÀ» ¸Ô°í Çϰųª ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù ¸Þ½ÃÁö (Èñ±Í) ºÎ¸ð¿¡ ´ë ÇÑ¡£

±âº» CWnd ±¸Çö ´ÙÀ½ ¸Þ½ÃÁö¸¦ ó¸® ÇÏ °í OnChildNotify ÈÄÅ©¸¦ »ç¿ë ÇÏ ¿© ÀÚ½Ä Ã¢ (ÄÁÆ®·Ñ)¸¦ ¸ÕÀú ¸Þ½ÃÁö¿¡¼­ ±Õ¿­À» Çã¿ëÇÕ´Ï´Ù:

OnChildNotify ÈÄÅ© self-draw ¸Þ½ÃÁö¸¦ ¼ÒÀ¯ÀÚ ±×¸®±â ¸Þ½ÃÁö¸¦ º¯°æ ÇÏ´Â °Í¿¡ ´ë ÇÑ »ç¿ë ÇÏ´Â °ÍÀ» ¾Ë ¼ö¡£

OnChildNotify ÈÄÅ© ¿Ü¿¡ ½ºÅ©·Ñ ¸Þ½ÃÁö Ãß°¡ ¶ó¿ìÆÃ µ¿ÀÛÀÌ ÀÖ´Ù. ½ºÅ©·Ñ ¸·´ë ¹× WM_HSCROLL ¹× WM_VSCROLL ¸Þ½ÃÁöÀÇ ¼Ò½º¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¾Æ·¡ ÂüÁ¶ ÇϽʽÿÀ¡£

CFrameWnd ¹®Á¦

´ëºÎºÐÀÇ ¸í·É ¶ó¿ìÆÃ ¹× »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ Á¦°ø ÇÏ´Â CFrameWnd Ŭ·¡½º ±¸Çö ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. À̰ÍÀº ÁÖ·Î ÀÀ¿ë ÇÁ·Î±×·¥ (CWinApp::m_pMainWnd)ÀÇ ÁÖ ÇÁ·¹ÀÓ Ã¢¿¡ ´ë ÇÑ »ç¿ë ÇÏÁö¸¸ ¸ðµç ÇÁ·¹ÀÓ Ã¢¿¡ Àû¿ë µË´Ï´Ù.

ÁÖ ÇÁ·¹ÀÓ Ã¢ÀÇ ¸Þ´º Ç¥½ÃÁ٠âÀ» ÀÌ¸ç »óÅ ǥ½ÃÁÙÀÇ ºÎ¸ð ¶Ç´Â ¶óÀÎ ¸Þ½ÃÁö. ¸í·É ¶ó¿ìÆÃ¿¡ ´ë ÇÑ À§ÀÇ ³íÀǸ¦ ÂüÁ¶ ÇϽʽÿÀ ¹× WM_INITMENUPOPUP.

CFrameWnd Ŭ·¡½º´Â ÇöÀç º¸±âÀÇ °ü¸®¸¦ Á¦°øÇÕ´Ï´Ù. ÇöÀç º¸±â¸¦ ÅëÇØ ´ÙÀ½ ¸Þ½ÃÁö¸¦ ¶ó¿ìÆÃÇÒ:

CMDIFrameWnd/CMDIChildWnd ¹®Á¦

MDI ÇÁ·¹ÀÓ Ã¢ Ŭ·¡½º´Â CFrameWnd ¿¡¼­ ÆÄ»ý ¹× µû¶ó¼­ µÑ ´ÙÀÇ ¸í·É ¶ó¿ìÆÃ ¹× »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ¾÷µ¥ÀÌÆ® CFrameWnd¿¡¼­ Á¦°ø ÇÏ´Â µ¿ÀÏÇÑ Á¾·ù¿¡ ´ëÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀÎ MDI ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ÁÖ ÇÁ·¹ÀÓ Ã¢ ( CMDIFrameWnd °³Ã¼)¸¸ ¸Þ´º ¸ðÀ½ ¹× »óÅ ǥ½ÃÁÙÀ» º¸À¯ ÇÏ °í µû¶ó¼­ ¸í·É ¶ó¿ìÆÃ ±¸ÇöÀÇ ÁÖ¿ä ¼Ò½ºÀÔ´Ï´Ù.

ÀÏ¹Ý ¶ó¿ìÆÃ ±¸¼ºÇ¥´Â Ȱ¼º MDI ÀÚ½Ä Ã¢ ¸í·É¿¡¼­ ù ¹øÂ° ±Õ¿­À» °¡Á®¿É´Ï´Ù. ±âº» PreTranslateMessage ÇÔ¼ö ó¸® µÎ MDI ÀÚ½Ä Ã¢¿¡ ´ë ÇÑ ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺í (ù ¹øÂ°) ¹× MDI ÇÁ·¹ÀÓ »Ó¸¸ ¾Æ´Ï¶ó, ÀϹÝÀûÀ¸·Î TranslateMDISysAccel (¸¶Áö¸·) ÀÇÇØ ó¸® Ç¥ÁØ MDI ½Ã½ºÅÛ ¸í·É ´ÜÃàŰ (2)¡£

½ºÅ©·Ñ ¸·´ë ¹®Á¦

½ºÅ©·Ñ ¸Þ½ÃÁö¸¦ ó¸® ÇÏ´Â °æ¿ì (WM_HSCROLL/OnHScroll ¹× WM_VSCROLL/OnVScroll ), ±×·¡¼­ ¾îµð¿¡¼­ ¿Â ½ºÅ©·Ñ ¸·´ë ¸Þ½ÃÁö¿¡ ÀÇÁ¸ ÇÏÁö ¾Ê´Â 󸮱â Äڵ带 ÀÛ¼º ÇÏ·Á°í ÇÑ´Ù. À̰ÍÀº ´ÜÁö ÀϹÝÀûÀÎ Windows ¹®Á¦, ¶Ç´Â WS_HSCROLLÁøÁ¤ÇÑ ½ºÅ©·Ñ ¸·´ë ÄÁÆ®·Ñ¿¡¼­¿¡¼­ ½ºÅ©·Ñ ¸Þ½ÃÁö ¿Ã ¼ö ÀÖÀ¸¹Ç·Î / ÇÏÁö ¾ÊÀºWS_VSCROLL ½ºÅ©·Ñ ¸·´ë ½ºÅ©·Ñ ¸·´ë ÄÁÆ®·Ñ¡£

MFC ÀÚ½Ä ¶Ç´Â ÇüÁ¦ (»ç½Ç ½ºÅ©·Ñ ¸·´ë¿Í ½ºÅ©·Ñ µÇ °í â »çÀÌÀÇ ºÎ¸ð/ÀÚ½Ä °ü°è´Â ¾Æ¹«°Íµµ µÉ ¼ö ÀÖ´Ù) ½ºÅ©·Ñ µÇ´Â À©µµ¿ìÀÇ ½ºÅ©·Ñ ¸·´ë ÄÁÆ®·Ñ¿¡ ´ë ÇÑ Çã¿ëÀ» È®Àå ÇÕ´Ï´Ù. À̰ÍÀº ºÐÇÒ Ã¢ ÇÔ²² °øÀ¯ ½ºÅ©·Ñ ¸·´ë¿¡ ´ë ÇÑ Æ¯È÷ Áß¿ä ÇÕ´Ï´Ù. CSplitterWnd °øÀ¯ ½ºÅ©·Ñ ¸·´ë ¹®Á¦¿¡ ´ë ÇÑ ´õ ¸¹Àº Á¤º¸¸¦ Æ÷ÇÔ ÇÑ ±¸Çö¿¡ ´ë ÇÑ ³»¿ëÀº ±â¼ú Âü°í 29 ¸¦ ÂüÁ¶ ÇϽʽÿÀ¡£

¸Þ¸ð Ãø¸é¿¡¼­ µÎ CWnd ÆÄ»ýµÈ Ŭ·¡½º ¾îµð¿¡¼­ ÁöÁ¤ µÈ ½ºÅ©·Ñ ¸·´ë ½ºÅ¸ÀÏ ¸¸µé±â ½Ã°£ °¤Çô ÀÖ°í Windows¿¡ Àü´Þ µÇÁö ÀÖ½À´Ï´Ù. »ý¼º ·çƾ¿¡ Àü´Þ ÇÏ´Â °æ¿ì WS_HSCROLL ¹× WS_VSCROLL µ¶¸³ÀûÀ¸·Î ¼³Á¤ÇÒ ¼ö ¾ø´Â, ÇÏÁö¸¸ ÈÄ¿¡ âÁ¶¸¦ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ¹°·Ð, ´ç½ÅÀÌ Á÷Á¢ Å×½ºÆ® ÇØ¾ß Çϰųª ÇÕ´Ï´Ù WS_ ¼³Á¤?±×µéÀÌ ¸¸µç â ½ºÅ¸ÀÏ ºñÆ®¸¦ ½ºÅ©·Ñ¡£

CMDIFrameWnd ¿¡ ´ë ÇÑ ½ºÅ©·Ñ ¸·´ë ½ºÅ¸ÀÏ ¸¸µé±â ¶Ç´Â LoadFrame ¿¡ Àü´Þ µÈ MDICLIENT¸¦ ¸¸µå´Â µ¥ »ç¿ë µË´Ï´Ù. ¼³Á¤ ÇØ¾ß ÇÕ´Ï´Ù. ½ºÅ©·Ñ MDICLIENT ¿µ¿ª (°°Àº Windows ÇÁ·Î±×·¥ °ü¸®ÀÚ) ÇϰíÀÚ ÇÏ´Â °æ¿ì µÎ ½ºÅ©·Ñ ¸·´ë ½ºÅ¸ÀÏ (WS_HSCROLL (ko) | WS_VSCROLL) CMDIFrameWnd »ý¼º ÇÏ´Â µ¥ »ç¿ë ÇÏ´Â ½ºÅ¸ÀÏ¿¡ ´ë ÇÑ¡£

CSplitterWnd ½ºÅ©·Ñ ¸·´ë ½ºÅ¸ÀÏ ºÐÇÒ ¿µ¿ª¿¡ ´ë ÇÑ Æ¯º° ÇÑ °øÀ¯ ½ºÅ©·Ñ ¸·´ë¿¡ Àû¿ë µË´Ï´Ù. Á¤Àû ºÐÇÒ Ã¢ ½ºÅ©·Ñ ¸·´ë ½ºÅ¸ÀÏ Áß Çϳª¸¦ ¼³Á¤ ÇÏÁö ÀϹÝÀûÀ¸·Î °ÍÀÔ´Ï´Ù. µ¿Àû ºÐÇÒ Ã¢¿¡ ´ë ÇÑ ÀϹÝÀûÀ¸·Î ´ç½ÅÀº °ÍÀÔ´Ï´Ù ½ºÅ©·Ñ ¹æÇâ ºÐÇÒ °ÍÀÔ´Ï´Ù Áï, WS_HSCROLL ¿­À» ºÐÇÒ ÇÏ´Â °æ¿ì ÇàÀ» WS_VSCROLL ¸¦ ºÐÇÒÇÒ ¼ö ÇÏ´Â °æ¿ì¿¡ ´ë ÇÑ ½ºÅ¸ÀÏ ¼³Á¤ ¸·´ë¡£

±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)

Index