Cwindowimpl·Î â ±¸Çö

âÀ» ±¸Çö, 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 ¿¡¼­ â ÇÁ·Î½ÃÀú ¼­ºêŬ·¡½Ì¡£

Index