âÀ» ±¸Çö, CWindowImpl¿¡¼ Ŭ·¡½º¸¦ ÆÄ»ý ÇÕ´Ï´Ù. ÆÄ»ýµÈ Ŭ·¡½º¿¡¼ ¸Þ½ÃÁö ¸Ê°ú ¸Þ½ÃÁö 󸮱â ÇÔ¼ö¸¦ ¼±¾ð ÇÕ´Ï´Ù. ÀÌÁ¦ ¼¼ °¡Áö ¹æ¹ýÀ¸·Î Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.:
»õ Windows Ŭ·¡½º¸¦ ±â¹ÝÀ¸·Î â ¸¸µé±â
CWindowImpl DECLARE_WND_CLASS ¸ÅÅ©·Î ¼±¾ð Windows Ŭ·¡½º Á¤º¸¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù. ÀÌ ¸ÅÅ©·Î CWndClassInfo ¸¦ »ç¿ë ÇÏ ¿© »õ Windows Ŭ·¡½º Á¤º¸¸¦ Á¤ÀÇ ÇÏ´Â GetWndClassInfo ÇÔ¼ö¸¦ ±¸Çö ÇÕ´Ï´Ù. CWindowImpl::Create °¡ È£Ãâ µÉ ¶§ÀÌ Windows Ŭ·¡½º¸¦ µî·Ï ÇÏ °í »õ âÀÌ »ý¼º¡£
¸Þ¸ðnbsp;??ATL â Ŭ·¡½º À̸§ »ý¼º µË´Ï´Ù °ÍÀ» ÀÇ¹Ì ÇÏ´Â DECLARE_WND_CLASS ¸ÅÅ©·Î CWindowImpl NULL Àü´Þ ÇÕ´Ï´Ù. ÀÚ½ÅÀÇ À̸§À» ÁöÁ¤ ÇÏ·Á¸é ¹®ÀÚ¿ CWindowImpl¿¡¼ DECLARE_WND_CLASS À» Àü´Þ-ÆÄ»ý Ŭ·¡½º(&N)¡£
´ÙÀ½Àº »õ Windows Ŭ·¡½º¸¦ ±â¹ÝÀ¸·Î âÀ» ±¸Çö Çϴ Ŭ·¡½ºÀÇ ¿¹:
cMyWindow Ŭ·¡½º: °ø¿ë CWindowImpllt;CMyWindow >,...
{
°ø°³:
? / / ÇÊ¿äÇÑ °æ¿ì »õ Windows Ŭ·¡½ºÀÇ À̸§À» ÁöÁ¤
? DECLARE_WND_CLASS("MyName") / /ÀÌ ¸ÅÅ©·Î¿¡ ÁöÁ¤ ÇÏÁö ¾ÊÀº °æ¿ì ±ÍÇÏÀÇ
???????????? / / Ŭ·¡½º, ATL Ŭ·¡½º À̸§ »ý¼º
? ...
BEGIN_MSG_MAP(CMyWindow)
???? MESSAGE_HANDLER (WM_PAINT, OnPaint)
? END_MSG_MAP()
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
? {
???? / / ÀϺΠ±×¸² ÄÚµå
???? 0; ¹Ýȯ
? }
}
âÀ» ¸¸µéÀÇ ÀνºÅϽº¸¦ ¸¸µé°í CMyWindow
´ÙÀ½ Create ¸Þ¼µå¸¦ È£Ãâ ÇÏ °í¡£
¸Þ¸ðnbsp;??±âº» Windows Ŭ·¡½º Á¤º¸¸¦ ÀçÁ¤ÀÇ ÇÏ·Á¸é GetWndClassInfo ¸Þ¼µå¸¦ ÆÄ»ýµÈ Ŭ·¡½º¿¡¼ ±¸Çö ÀûÀý ÇÑ °ªÀ» CWndClassInfo ¸â¹ö¸¦ ¼³Á¤ ÇÏ ¿©(&N)¡£
Superclassing ±âÁ¸ Windows Ŭ·¡½º
DECLARE_WND_SUPERCLASS ¸ÅÅ©·Î »ç¿ë ÇÏ¸é ±× ¼öÆÛ ±âÁ¸ À©µµ¿ì âÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù Ŭ·¡½º. CWindowImpl¿¡¼ÀÌ ¸ÅÅ©·Î ÁöÁ¤-Ŭ·¡½º¸¦ ÆÄ»ý ÇÕ´Ï´Ù. ´Ù¸¥ ATL â ó·³ ¸Þ½ÃÁö¸¦ ¸Þ½ÃÁö ¸ÊÀ» ÅëÇØ Ã³¸®¡£
DECLARE_WND_SUPERCLASS¸¦ »ç¿ëÇÒ ¶§ »õ â Ŭ·¡½º¸¦ µî·Ï µË´Ï´Ù. ÀÌ »õ Ŭ·¡½º¸¦ ÁöÁ¤ ÇÏÁö¸¸ CWindowImpl::WindowProc (¶Ç´ÂÀÌ ¸Þ¼µå¸¦ ÀçÁ¤ÀÇ ÇÏ´Â ÇÔ¼ö) â ÇÁ·Î½ÃÀú¸¦ ´ëü ÇÏ´Â ±âÁ¸ Ŭ·¡½º¿Í °°Àº °ÍÀÔ´Ï´Ù.
´ÙÀ½Àº Ŭ·¡½ºÀÇ ¿¹´Â ¼öÆÛ Ç¥ÁØ ÆíÁý Ŭ·¡½º:
cMyEdit Ŭ·¡½º: °ø¿ë CWindowImpllt;CMyEdit >,...
{
°ø°³:
? / / "ÆíÁý" Ç¥ÁØ Windows Ŭ·¡½ºÀÇ À̸§ÀÔ´Ï´Ù.
? / / "MyEdit"´Â »õ Windows Ŭ·¡½ºÀÇ À̸§À»
? / / ±× ÆíÁý Ŭ·¡½º¿¡ µû¶ó ´Þ¶ó Áý´Ï´Ù.
? DECLARE_WND_SUPERCLASS ("ÆíÁý", "MyEdit")
...
? BEGIN_MSG_MAP(CMyEdit)
???? MESSAGE_HANDLER (WM_CHAR, OnChar)
? END_MSG_MAP()
LRESULT OnChar(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
? {
???? / / Äڵ带 ó¸® ÇÏ´Â ÀϺΠ¹®ÀÚ¸¦ ÇÒ
? }
}
ÄÁÆ®·ÑÀÎ °æ¿ì ÆíÁý âÀ» ¸¸µé·Á¸éÀÇ ÀνºÅϽº¸¦ ¸¸µé°í CMyEdit
´ÙÀ½ Create ¸Þ¼µå¸¦ È£Ãâ ÇÏ °í¡£
Superclassing¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÂüÁ¶ Win32 SDK ¿¡¼ â ÇÁ·Î½ÃÀú Superclassing¡£
±âÁ¸ â ¼ºê Ŭ·¡½º ÇÏ CWindowImpl ¿¡¼ Ŭ·¡½º¸¦ ÆÄ»ý ÇÏ °í ¸Þ½ÃÁö ¸ÊÀ» µÎ ÀÌÀü °æ¿ì¿¡¼¿Í °°ÀÌ ¼±¾ð ÇÕ´Ï´Ù. ´Ü, ÀÌ¹Ì ±âÁ¸ âÀ» ¼ºê °Í ÀÌ´Ù ÀÌÈÄ ¾î¶² Windows Ŭ·¡½º Á¤º¸¸¦ ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é¡£
Create¸¦ È£Ãâ ÇÏ´Â ´ë½Å SubclassWindow ¸¦ È£Ãâ ÇÏ °í ±âÁ¸ âÀ» ¼ºê Ŭ·¡½º ÇÏ¿¡ ÇÚµéÀ» Àü´Þ ÇÕ´Ï´Ù. âÀÌ ¼ºêŬ·¡½ÌµÈ ÀÏ´Ü CWindowImpl::WindowProc (¶Ç´ÂÀÌ ¸Þ¼µå¸¦ ÀçÁ¤ÀÇ ÇÏ´Â ÇÔ¼ö)¸¦ »ç¿ë ÇÏ ¿© Á÷Á¢ ¸Þ½ÃÁö¸¦ ¸Þ½ÃÁö ¸Ê °ÍÀÔ´Ï´Ù ±×°Í. °³Ã¼¿¡¼ ¼ºêŬ·¡½ÌµÈ âÀ» ºÐ¸®, UnsubclassWindow¸¦ È£Ãâ ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ º¹¿øÇÒ Ã¢ÀÇ ¿ø·¡ â ÇÁ·Î½ÃÀú¡£
¼ºêŬ·¡½Ì¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÂüÁ¶ Win32 SDK ¿¡¼ â ÇÁ·Î½ÃÀú ¼ºêŬ·¡½Ì¡£