ATL/WTLÇÁ·Î±×·¡¹Ö¿¡¼­´Â  ¸Þ¼¼Áö¿Í ±×¿¡ ´ëÇÑ Çڵ鷯 ÇÔ¼ö¸¦ ¸Þ¼¼Áö ¸Ê¿¡ ÀÇÇØ ¿¬°á½Ãŵ´Ï´Ù.

class CMyWindow : public CWindowImpl<CMyWindow>

{

    // ¸Þ¼¼Áö ¸Ê

    BEGIN_MSG_MAP(CMyWindow)

        MESSAGE_HANDLER(WM_PAINT, OnPaint)

        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)

    END_MSG_MAP()

 

    LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){

        // WM_PAINT¸Þ¼¼Áö¿¡ÀÇ ÀÀ´ä ó¸®

    }

 

    LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){

        // WM_DESTROY¸Þ¼¼Áö¿¡ÀÇ ÀÀ´ä ó¸®

    }

};

                      


¡¡À©µµ¿ì°¡ ¸Þ¼¼Áö¸¦ ¹Þ¾ÆµéÀÌ¸é ¸Þ¼¼Áö ¸ÊÀÇ ¼±µÎ·ÎºÎÅÍ ¼ø¼­¿¡ °Ë»öµÇ¹Ç·Î  ºó¹øÇÏ°Ô »ç¿ëµÇ´Â ¸Þ¼¼Áö¸¦ ÃÖÃÊ¿¡ ±â¼úÇØ µÎ¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ¸Þ¼¼Áö ¸Ê Áß¿¡ ´ëÀÀÇÏ´Â ¸Þ¼¼Áö ¸ÅÅ©·Î°¡ ¹ß°ßµÇÁö ¾ÊÀ¸¸é  ¸Þ¼¼Áö´Â µðÆúÆ® À©µµ¿ì ÇÁ·Î½ÃÀú¿¡°Ô °Ç³×Áý´Ï´Ù.

¡¡ATL¿¡¼­ ÁغñÇÏ´Â ¸Þ¼¼Áö ¸ÅÅ©·Î´Â Å©°Ô ³ª´©¾î 3Á¾·ù ÀÖ½À´Ï´Ù. ±×°ÍÀº ¸Þ¼¼Áö Çڵ鷯 ¸ÅÅ©·Î, Ä¿¸àµå Çڵ鷯 ¸ÅÅ©·Î , ÅëÁö Çڵ鷯 ¸ÅÅ©·ÎÀÇ 3°³ÀÔ´Ï´Ù.



¸Þ¼¼Áö Çڵ鷯 ¸ÅÅ©·Î

¡¡¸Þ¼¼Áö Çڵ鷯 ¸ÅÅ©·Î´Â ¸ðµç ¸Þ¼¼Áö¸¦ ´ë»óÀ¸·Î ÇÕ´Ï´Ù. ¸Þ¼¼Áö Çڵ鷯 ¸ÅÅ©·Î¿¡´Â ´ÙÀ½ÀÇ 2°³°¡ ÀÖ½À´Ï´Ù.

  • MESSAGE_HANDLER(¸Þ¼¼Áö¸í, Çڵ鷯¸í)
    ÁöÁ¤µÈ ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • MESSAGE_RANGE_HANDLER(°³½Ã À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Á¾·á À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Çڵ鷯¸í)
    ¿¬¼ÓÇÑ ¹üÀ§ÀÇ º¹¼öÀÇ ¸Þ¼¼Áö¸¦ Çڵ鷯¿¡ ¸Ê ÇÕ´Ï´Ù.


¸Þ¼¼Áö Çڵ鷯 ÇÔ¼öÀÇ prototype¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

                      


uMsg
´Â ¸Þ¼¼Áö¸¦ ½Äº°ÇØ wParam°ú lParamÀº ¸Þ¼¼Áö ÆÄ¶ó¹ÌÅÍÀÔ´Ï´Ù. ¸Þ¼¼Áö ÆÄ¶ó¹ÌÅÍÀÇ ³»¿ëÀº ¸Þ¼¼ÁöÀÇ Á¾·ù¿¡ ÀÇÇØ ¹Ù²ò´Ï´Ù. bHandledÀº ¸Þ¼¼ÁöÀÇ Ã³¸®¸¦ ³¡³Â´ÂÁö ¾î¶°Çß´ÂÁö¸¦ ³ªÅ¸³»´Â Ç÷¡±×ÀÔ´Ï´Ù. bHandledÇÏÁö¸¸ Çڵ鷯 ÇÔ¼ö Áß¿¡¼­FALSE·Î ¼³Á¤µÇ¾î ÀÖÀ¸¸é ¸Þ¼¼Áö ¸ÊÀÇ ³ª¸ÓÁöÀÇ ºÎºÐ¿¡¼­  ±× ¸Þ¼¼Áö¸¦ À§ÇÑ Çڵ鷯°¡ º°·Î ¾ø´ÂÁö ¾î¶²Áö°¡ °Ë»öµË´Ï´Ù. bHandledÀº Çڵ鷯 ÇÔ¼öÀÇ È£ÃâÀü¿¡TRUE·Î ¼³Á¤µÇ¹Ç·Î  Çڵ鷯 ÇÔ¼ö°¡bHandled¸¦ ¸í½ÃÀûÀ¸·ÎFALSE·Î ¼³Á¤ÇÏÁö ¾Ê´Â ÇÑ  ±× ÀÌ»óÀÇ Çڵ鷯 °Ë»ö 󸮴 ÇàÇØÁöÁö ¾Ê½À´Ï´Ù.



Ä¿¸àµå Çڵ鷯 ¸ÅÅ©·Î

¡¡Ä¿¸àµå Çڵ鷯 ¸ÅÅ©·Î´Â Ä¿¸àµå ¸Þ¼¼Áö(WM_COMMAND) ¸¦ ´ë»óÀ¸·Î ÇÕ´Ï´Ù. Ä¿¸àµå Çڵ鷯 ¸ÅÅ©·Î¿¡´Â ´ÙÀ½ÀÇ 4°³°¡ ÀÖ½À´Ï´Ù.

  • COMMAND_HANDLER(ID, ÅëÁö ÄÚµå, Çڵ鷯¸í)
    ÁöÁ¤µÈ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÁöÁ¤µÈ ÅëÁö Äڵ带 °¡Áö´Â Ä¿¸àµå ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • COMMAND_ID_HANDLER(ID, Çڵ鷯¸í)
    ÁöÁ¤µÈ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÀÓÀÇÀÇ ÅëÁö Äڵ带 °¡Áö´Â Ä¿¸àµå ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • COMMAND_CODE_HANDLER(ÅëÁö ÄÚµå, Çڵ鷯¸í)
    ÀÓÀÇÀÇ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÁöÁ¤µÈ ÅëÁö Äڵ带 °¡Áö´Â Ä¿¸àµå ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • COMMAND_RANGE_HANDLER(°³½Ã À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Á¾·á À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Çڵ鷯¸í)
    ¿¬¼ÓÇÑ ¹üÀ§ÀÇ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ Ä¿¸àµå ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.


Ä¿¸àµå Çڵ鷯 ÇÔ¼öÀÇ prototype¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

                      


wNotifyCode
´Â ÅëÁö ÄÚµå wID´Â Ä¿¸àµå¸¦ ¼Û½ÅÇϰí ÀÖ´Â ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ  hWndCtl´Â Ä¿¸àµå¸¦ ¼Û½ÅÇϰí ÀÖ´Â ÄÁÆ®·ÑÀÇ ÇÚµé bHandledÀº Àü¼úÀÇ Ç÷¡±×ÀÔ´Ï´Ù.



ÅëÁö Çڵ鷯 ¸ÅÅ©·Î

¡¡ÅëÁö Çڵ鷯 ¸ÅÅ©·Î´Â ÅëÁö ¸Þ¼¼Áö(WM_NOTIFY) ¸¦ ´ë»óÀ¸·Î ÇÕ´Ï´Ù. ÅëÁö Çڵ鷯 ¸ÅÅ©·Î¿¡´Â ´ÙÀ½ÀÇ 4°³°¡ ÀÖ½À´Ï´Ù.

  • NOTIFY_HANDLER(ID, ÅëÁö ÄÚµå, Çڵ鷯¸í)
    ÁöÁ¤µÈ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÁöÁ¤µÈ ÅëÁö Äڵ带 °¡Áö´Â ÅëÁö ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • NOTIFY_ID_HANDLER(ID, Çڵ鷯¸í)
    ÁöÁ¤µÈ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÀÓÀÇÀÇ ÅëÁö Äڵ带 °¡Áö´Â ÅëÁö ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • NOTIFY_CODE_HANDLER(ÅëÁö ÄÚµå, Çڵ鷯¸í)
    ÀÓÀÇÀÇ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÁöÁ¤µÈ ÅëÁö Äڵ带 °¡Áö´Â ÅëÁö ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.

 

  • NOTIFY_RANGE_HANDLER(°³½Ã À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Á¾·á À§Ä¡ÀÇ ¸Þ¼¼Áö¸í, Çڵ鷯¸í)
    ¿¬¼ÓÇÑ ¹üÀ§ÀÇ ÄÁÆ®·Ñ·ÎºÎÅÍÀÇ ÅëÁö ¸Þ¼¼Áö¸¦ Çڵ鷯 ÇÔ¼ö¿¡ ¸Ê ÇÕ´Ï´Ù.


ÅëÁö Çڵ鷯 ÇÔ¼öÀÇ prototype¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù.

LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);

                      


idCtrl
Àº ÅëÁö¸¦ ¼Û½ÅÇϰí ÀÖ´Â ÄÁÆ®·ÑÀÇ ½Äº°ÀÚ pnmh´Â NMHDR±¸Á¶Ã¼¿¡ÀÇ Æ÷ÀÎÅÍ  bHandled´Â Àü¼úÀÇ Ç÷¡±×ÀÔ´Ï´Ù.