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;
? }
}