´ëÈ­ »óÀÚ ±¸Çö

ATL ÇÁ·ÎÁ§Æ®¿¡ ´ëÈ­ »óÀÚ¸¦ Ãß°¡ ÇÏ´Â ¹æ¹ý¿¡ µÎ °¡Áö°¡: ATL °³Ã¼ ¸¶¹ý»ç¸¦ »ç¿ë Çϰųª ¼öµ¿À¸·Î Ãß°¡¡£

ATL °³Ã¼ ¸¶¹ý»ç¿¡¼­ ´ëÈ­ »óÀÚ Ãß°¡

ATL °³Ã¼ ¸¶¹ý»ç (»ðÀÔ ¸Þ´º¿¡¼­ »õ ATL °³Ã¼ ¸í·ÉÀ»)¿¡¼­ ¿ÞÂÊµÈ Ã¢¿¡¼­ ±âŸ ¹üÁÖ¸¦ °­Á¶ Ç¥½Ã ÇÑ ´ÙÀ½ ATL ÇÁ·ÎÁ§Æ®¿¡ ´ëÈ­ »óÀÚ¸¦ Ãß°¡ ÇÏ·Á¸é ¿À¸¥ÂÊ Ã¢¿¡¼­ Dialog °³Ã¼¸¦ µÎ ¹ø Ŭ¸¯ ÇÕ´Ï´Ù. ÀûÀý ÇÏ °Ô ATL °³Ã¼ ¸¶¹ý»ç ¼Ó¼º ´ëÈ­ »óÀÚÀÇ Ã¤¿ì°í È®ÀÎÀ» Ŭ¸¯ ÇÕ´Ï´Ù. ATL °³Ã¼ ¸¶¹ý»ç ÇÁ·ÎÁ§Æ®¸¦ CAxDialogImpl ¿¡¼­ ÆÄ»ý µÈ Ŭ·¡½º¸¦ Ãß°¡ ÇÏ °í ´ëÈ­ »óÀÚ ÅÛÇø´ ¸®¼Ò½º ÆíÁý±â¸¦ ¿±´Ï´Ù.

¸Þ¸ðnbsp;??´ëÈ­ »óÀÚ¸¦ CAxDialogImpl ¿¡¼­ ÆÄ»ý ÇÏ´Â °æ¿ì ActiveX ¹× Windows ÄÁÆ®·ÑÀ» È£½ºÆÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëÈ­ »óÀÚ Å¬·¡½º¿¡ ActiveX ÄÁÆ®·Ñ Áö¿ø ¿À¹ö Çìµå¸¦ ¿øÇÏÁö ¾Ê´Â °æ¿ì CSimpleDialog ³ª CDialogImpl ´ë½Å »ç¿ë(&N)¡£

¸Þ½ÃÁö ¹× À̺¥Æ® 󸮱⸦ Ŭ·¡½º ºä¿¡¼­ ´ëÈ­ »óÀÚ Å¬·¡½º¿¡ Ãß°¡ÇÒ ¼ö MFC Ŭ·¡½º¿Í °°Àº ¹æ½Ä¿¡ ÀÖ½À´Ï´Ù. Ŭ·¡½º ºä, Ŭ·¡½º¸¦ ¸¶¿ì½º ¿À¸¥ÂÊ ´ÜÃ߷ΠŬ¸¯ ÇÏ °í »õ Windows ¸Þ½ÃÁö ¹× À̺¥Æ® 󸮱⠴ëÈ­ »óÀÚ¸¦ ¿­·Á¸é Windows ¸Þ½ÃÁö 󸮱â Ãß°¡ ¼±Åà ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ¸Þ½ÃÁö 󸮱â Ãß°¡ ÂüÁ¶ ÇϽʽÿÀ.

´ëÈ­ »óÀÚ ÅÛÇø´¿¡¼­ »õ Windows ¸Þ½ÃÁö ¹× À̺¥Æ® 󸮱⠴ëÈ­ »óÀÚ¸¦ ¿­·Á¸é ´ëÈ­ »óÀÚ ¼­½Ä ÆÄÀÏ¿¡¼­ ÄÁÆ®·ÑÀ» ¸¶¿ì½º ¿À¸¥ÂÊ ´ÜÃ߷ΠŬ¸¯ ÇÏ °í ¹Ù·Î °¡±â ¸Þ´º¿¡¼­ À̺¥Æ® ¸í·ÉÀ» ¼±Åà ÇÕ´Ï´Ù. ATL ÇÁ·ÎÁ§Æ®¿¡ ´ëÈ­ »óÀÚ Å¬·¡½º Ŭ·¡½º ¶Ç´Â °³Ã¼¸¦ ó¸®ÇÒ »óÀÚ;¿¡¼­ °­Á¶ Ç¥½Ã µË´Ï´Ù. ¹Ý¸é¿¡, MFC ÇÁ·ÎÁ§Æ®¿¡ ´ë ÇÑ ÄÁÆ®·ÑÀÌ °­Á¶ Ç¥½Ã µË´Ï´Ù¡£

´ëÈ­ »óÀÚ¿¡ ¼öµ¿À¸·Î Ãß°¡

±¸Çö ÇÏ´Â ´ëÈ­ »óÀÚ Ã¢À» ±¸Çö ÇÏ´Â °Í°ú ºñ½ÁÇÕ´Ï´Ù. CAxDialogImpl, CDialogImpl¶Ç´Â CSimpleDialog ¿¡¼­ Ŭ·¡½º¸¦ ÆÄ»ý ÇÏ °í ¸Þ½ÃÁö¸¦ ó¸® Çϵµ·Ï ¸Þ½ÃÁö ¸Ê À» ¼±¾ð ÇÕ´Ï´Ù. ±×·¯³ª, ´ç½ÅÀº ¶ÇÇÑ ÆÄ»ýµÈ Ŭ·¡½º¿¡ ´ëÈ­ »óÀÚ ÅÛÇø´ ¸®¼Ò½º ID¸¦ ÁöÁ¤ ÇØ¾ß ÇÕ´Ï´Ù. ±ÍÇÏÀÇ Å¬·¡½º ¶ó´Â µ¥ÀÌÅÍ ¸â¹ö°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. IDD ÀÌ °¡Ä¡¸¦ °³ÃÖ¡£

¸Þ¸ðnbsp;??ATL °³Ã¼ ¸¶¹ý»ç¸¦ »ç¿ë ÇÏ ¿© ´ëÈ­ »óÀÚ¸¦ ¸¸µé ¶§ ¸¶¹ý»ç¸¦ ÀÚµ¿À¸·Î Ãß°¡ ÇÏ´Â IDD ¸â¹ö´Â ¿­°ÅÇü Çü½ÄÀ¸·Î(&N)¡£

CDialogImpl À» »ç¿ë ÇÏ¸é ¸ð´Þ ¶Ç´Â ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ Windows ÄÁÆ®·ÑÀ» È£½ºÆÃÇÏ´Â ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. CAxDialogImpl ¸¦ »ç¿ë ÇÏ¸é ¸ð´Þ ¶Ç´Â ¸ð´ú¸®½º ´ëÈ­ »óÀÚ ActiveX ¹× Windows ÄÁÆ®·ÑÀ» È£½ºÆÃÇÏ´Â ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸ð´Þ ´ëÈ­ »óÀÚ¸¦ ¸¸µé·Á¸é CDialogImplÀÇ ÀνºÅϽº¸¦ ¸¸µé°í-ÆÄ»ý (¶Ç´Â CAxDialogImpl-ÆÄ»ý) Ŭ·¡½º¿Í DoModal ¸Þ¼­µå¸¦ È£Ãâ ÇÕ´Ï´Ù. ¸ð´Þ ´ëÈ­ »óÀÚ¸¦ ´ÝÀ¸·Á¸é ¸Þ½ÃÁö 󸮱⿡¼­ EndDialog ¸Þ¼­µå¸¦ È£Ãâ ÇÕ´Ï´Ù. ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ ¸¸µé·Á¸é DoModal´ë½Å Create ¸Þ¼­µå¸¦ È£Ãâ ÇÕ´Ï´Ù. ¸ð´ú¸®½º ´ëÈ­ »óÀÚ¸¦ Æı« ÇÏ·Á¸é DestroyWindow¡£

´ëÈ­ »óÀÚ °³Ã¼´Â ActiveX ÄÁÆ®·ÑÀ» Æ÷ÇÔ ÇÏ´Â °æ¿ì ÀÌ·¯ÇÑ ÄÁÆ®·ÑÀÇ À̺¥Æ®¸¦ ó¸® ÇÏ´Â Á¶¾ð ÇÏ °í ¸ðµç ActiveX ÄÁÆ®·Ñ ÀÎÅÍÆäÀ̽º¸¦ unadvise ÇÊ¿ä°¡ ÀÖÀ» °Í ÀÌ´Ù. ÀÌ ÄÚµåÀÇ ´ÙÀ½ ÁÙÀ» Ãß°¡ ÇÏ ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù ±ÍÇÏÀÇ InitDialog ÇÔ¼ö:

AtlAdviseSinkMap (pMyDlg, TRUE)

¸ðµç ActiveX ÄÁÆ®·Ñ unadvise¸¦ ÄÚµåÀÇ ´ÙÀ½ ÁÙÀ» Ãß°¡ ±ÍÇÏÀÇ EndDialog ÇÔ¼ö (¶Ç´Â ´ëÈ­ »óÀÚ °³Ã¼ÀÇ Á¾·á¿¡ µû¶ó È£Ãâ ÇÏ´Â ÇÔ¼ö):

AtlAdviseSinkMap (pMyDlg, FALSE)

CWindowImpl󸮱â¿Í ¸¶Âù°¡Áö·Î ´ëÈ­ »óÀÚ ¸Þ½ÃÁö 󸮱⸦ ±¸Çö-Ŭ·¡½º¸¦ ÆÄ»ý ÇÕ´Ï´Ù. ¸Þ½ÃÁö ƯÁ¤ ¹Ýȯ °ª ÀÌ¸é ¹ÝȯÀ¸·Î ±×°ÍÀ» LRESULT . ¹Ýȯ µÈ LRESULT °ªÀº ATL Windows ´ëÈ­ °ü¸®ÀÚ°¡ ÀûÀý ÇÑ Ã³¸®¿¡ ¸ÅÇε˴ϴÙ. ÀÚ¼¼ÇÑ ³»¿ëÀº ¼Ò½º Äڵ忡¿¡¼­ ´ë ÇÑ ÂüÁ¶ CDialogImplBaseT::DialogProc atlwin.h¡£

¿¹Á¦

´ëÈ­ »óÀÚ¸¦ ±¸Çö ÇÏ´Â ´ÙÀ½ Ŭ·¡½º:

cMyDialog Ŭ·¡½º: °ø¿ë CDialogImpllt;CMyDialog >,...
{
°ø°³:
 ? enum {IDD = IDD_MYDIALOG};

BEGIN_MSG_MAP(CMyDialog)
 ???? MESSAGE_HANDLER (WM_INITDIALOG, OnInitDialog)
 ? END_MSG_MAP()

LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
 ? {
 ???? / / ÀϺΠÃʱâÈ­ ÄÚµå
 ???? ¹Ýȯ 1;
 ? }
}

Index