¸ÞÀÎ À©µµ¿ìÀÇ base class¿¡CWindowImplŬ·¡½º¸¦ »ç¿ëÇϰí ÀÖ¾úÀ» °æ¿ì´Â  À©µµ¿ì Ŭ·¡½º¸íÀ̳ª ¹è°æ»ö,  Ä¿¼­ µî ¼Ó¼ºÀ» ÁöÁ¤Çϱâ À§Çؼ­DECLARE_WND_CLASSµîÀÇ ¸ÅÅ©·Î³ª  CWndClassInfo±¸Á¶Ã¼¸¦ »ç¿ëÇß½À´Ï´Ù. ¸ÞÀÎ À©µµ¿ìÀÇ base class¿¡ CFrameWindowImplŬ·¡½º¸¦ »ç¿ëÇßÀ» °æ¿ì¿¡µµ °°Àº ¸ÅÅ©·Î³ª Ŭ·¡½º°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.



ÇÁ·¹ÀÓ À©µµ¿ì Ŭ·¡½º¸í ¸ÅÅ©·Î

¡¡ÇÁ·¹ÀÓ À©µµ¿ì Ŭ·¡½º¸íÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸ÅÅ©·Î¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

  • DECLARE_FRAME_WND_CLASS(À©µµ¿ì Ŭ·¡½º¸í, °øÅë ÀÚ¿øID)
    À©µµ¿ì Ŭ·¡½º¸í°ú °øÅë ÀÚ¿øIDÀ» Á¤ÀÇÇÕ´Ï´Ù. µ¡ºÙ¿©ATLÀÇDECLARE_WND_CLASS¸ÅÅ©·Î¿¡¼­´Â  µðÆúÆ®ÀÇ ½ºÅ¸ÀϷμ­ CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ¸¦ ¼³Á¤ÇØ ÁÝ´Ï´Ù¸¸ , DECLARE_FRAME_WND_CLASS±×·³ 0 À» ¼³Á¤ÇÕ´Ï´Ù.

 

  • DECLARE_FRAME_WND_CLASS_EX(À©µµ¿ì Ŭ·¡½º¸í, °øÅë ÀÚ¿øID, ½ºÅ¸ÀÏ, ¹è°æ»ö)
    À©µµ¿ì Ŭ·¡½º¸í , °øÅë ÀÚ¿øID, ½ºÅ¸ÀÏ , ¹è°æ»öÀ» Á¤ÀÇÇÕ´Ï´Ù.


ÀÌ·¯ÇÑ ¸ÅÅ©·Î´Âpublic¼±¾ðÀ¸·Î »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ·¯ÇÑ ¸ÅÅ©·Î¸¦ »ç¿ëÇØ À©µµ¿ì Ŭ·¡½º¸íÀ» ¸í½ÃÀûÀ¸·Î µî·ÏÇÏÁö ¾Ê´Â ¶Ç´Â À©µµ¿ì Ŭ·¡½º¸íÀ¸·Î¼­NULL¸¦ ÁöÁ¤ÇßÀ» °æ¿ì  WTL´Â "ATL:00406060" °ú °°Àº À̸§À» ÀÚµ¿ÀûÀ¸·Î µî·ÏÇÕ´Ï´Ù.



CFrameWndClassInfoŬ·¡½º

¡¡CFrameWndClassInfoŬ·¡½º´Â Àü¼úÀÇ ¸ÅÅ©·Îº¸´Ù ÇÁ·¹ÀÓ À©µµ¿ìÀÇ ¼Ó¼ºÀ» ¼¼¼¼ÇÏ°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. CFrameWndClassInfoŬ·¡½º¸¦ »ç¿ëÇØ »õ·Î¿î ¼Ó¼ºÀ» ÁöÁ¤Çϱâ À§Çؼ­´Â CFrameWindowImpl::GetWndClassInfo()À» ¿À¹ö¶óÀ̵å(override) ÇØ  Ä¿½ºÅ͸¶ÀÌÁî ÇÑ Á¤ÀûÀÎCFrameWndClassInfoÀνºÅϽºÀÇ ÂüÁ¶¸¦ µ¹·ÁÁÝ´Ï´Ù.

class CMyWindow: public CFrameWndClassInfo<CMyWindow>

{

public:

    static WTL::CFrameWndClassInfo& GetWndClassInfo()

    {

        static WTL::CFrameWndClassInfo wc =

        {

            {sizeof(WNDCLASSEX), CS_HREDRAW | CS_VREDRAW, StartWindowProc,

            0, 0, NULL, NULL, NULL, (HBRUSH)(COLOR_WINDOW + 1), NULL,

            "MyWindow", NULL},            // WNDCLASSEX±¸Á¶Ã¼

            NULL,                         // ±âÁ¸ÀÇ À©µµ¿ì Ŭ·¡½º¸í

            NULL,                         // ±âÁ¸ÀÇ À©µµ¿ì ÇÁ·Î½ÃÀú

            MAKEINTRESOURCE(IDC_CURSOR1), // Ä¿¼­ ÀÚ¿ø¸í

            FALSE,                        // ½Ã½ºÅÛ Ä¿¼­¶ó¸éTRUE, ±× Àܴ̿ÂFALSE

            0,                            // µî·ÏÀÌ ³¡³­ À©µµ¿ì Ŭ·¡½ºÀÇ ½Äº°ÀÚ

            _T("")                        // ATL°¡ ÀÚµ¿ »ý¼ºÇÑ À©µµ¿ì Ŭ·¡½º¸í

            IDR_MAINFRAME                 // °øÅë ÀÚ¿øID

        };

        return wc;

    }

...

};