¼½Ä ÆÄÀÏ lt; Ŭ·¡½ºTBaseCWindow, Ŭ·¡½º =TWinTraits(&L) = CControlWinTraits gt;
CContainedWindowT Ŭ·¡½º: °ø¿ë TBase(&G)
¸Å°³ º¯¼ö
TBase
»õ Ŭ·¡½ºÀÇ ±âº» Ŭ·¡½ºÀÔ´Ï´Ù. ±âº» ±âº» Ŭ·¡½º´Â CWindow¡£
TWinTraits
â¿¡ ´ë ÇÑ ½ºÅ¸ÀÏÀ» Á¤ÀÇ Çϴ Ư¼º Ŭ·¡½ºÀÔ´Ï´Ù. ±âº»°ªÀº CControlWinTraits ÀÔ´Ï´Ù.
¸Þ¸ð nbsp; CContainedWindow CContainedWindowTÀÇ Àü¹®È ÀÌ´Ù. Á÷Á¢ CContainedWindowT »ç¿ë ÇÏ´Â ±âº» Ŭ·¡½º ¶Ç´Â Ư¼ºÀ» º¯°æ(&N).
CContainedWindow ´Ù¸¥ °³Ã¼ ³»¿¡ Æ÷ÇÔ µÈ âÀ» ±¸Çö ÇÕ´Ï´Ù. CContainedWindowâ ÇÁ·Î½ÃÀú¿¡¼´Â Æ÷ÇÔ ÇÏ´Â °³Ã¼ÀÇ ¸Þ½ÃÁö Áöµµ »ç¿ë ÇÏ ¿© ÀûÀý ÇÑ Ã³¸®±â¿¡ ¸Þ½ÃÁö¸¦ Á÷Á¢. ¸Þ½ÃÁö ¸ÊÀ» »ç¿ë ÇØ¾ß ÁöÁ¤ CContainedWindow °³Ã¼¸¦ »ý¼º ÇÏ´Â °æ¿ì¡£
CContainedWindow ¸¦ »ç¿ë ÇÏ¸é ±âÁ¸ â Ŭ·¡½º superclassing ÇÏ ¿© »õ âÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. Create ¸Þ¼µå´Â ¸ÕÀú ±âÁ¸ Ŭ·¡½º¿¡ ±â¹Ý ÇÏÁö¸¸ CContainedWindow::WindowProc¸¦ »ç¿ë Çϴ â Ŭ·¡½º¸¦ µî·Ï ÇÕ´Ï´Ù. ¸¸µé±â ¿¡ ´ÙÀ½ÀÌ »õ â Ŭ·¡½º¸¦ ±â¹ÝÀ¸·Î Çϴ âÀ» ¸¸µì´Ï´Ù. CContainedWindow ÀÇ °¢ ÀνºÅϽº ¼ö ½´ÆÛ ´Ù¸¥ â Ŭ·¡½º¡£
CContainedWindow â ¼ºêŬ·¡½ÌÀ» Áö¿øÇÕ´Ï´Ù. SubclassWindow ¸Þ¼µå´Â ±âÁ¸ â CContainedWindow °³Ã¼¿¡ ¿¬°á ÇÏ °í CContainedWindow::WindowProcâ ÇÁ·Î½ÃÀú º¯°æ. °¢ ÀνºÅϽºÀÇ CContainedWindow ÇÏÀ§ ´Ù¸¥ â ¼ö¡£
¸Þ¸ðnbsp;??¾î¶² ÁÖ¾îÁøµÈ CContainedWindow °³Ã¼¿¡ ´ë ÇÑ ¸¸µé±â ¶Ç´Â SubclassWindow¸¦ È£Ãâ ÇÕ´Ï´Ù. µÎ ¹æ¹ý ¸ðµÎ µ¿ÀÏÇÑ °³Ã¼¸¦ È£Ãâ ÇÏÁö ¾Ê¾Æ¾ß(&N)¡£
ATL °³Ã¼ ¸¶¹ý»ç¿¡¼ ÄÁÆ®·Ñ¿¡ µû¶ó Ãß°¡ ¿É¼ÇÀ» »ç¿ë ÇÏ´Â °æ¿ì ¸¶¹ý»ç´Â ÄÁÆ®·ÑÀ» ±¸Çö Çϴ Ŭ·¡½º¿¡ CContainedWindow µ¥ÀÌÅÍ ¸â¹ö¸¦ Ãß°¡ ÇÏ´Â ÀÚµ¿À¸·Î µË´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼ °¡Á®¿Â °ÍÀÔ´Ï´Ù ÀÖ´Â SUBEDIT »ùÇà ¹× Æ÷ÇÔ µÈ âÀÌ ¼±¾ð ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù
class CAtlEdit : ...
{
public:
// Declare a contained window data member
CContainedWindow m_EditCtrl;
// Initialize the contained window:
// 1. Pass "EDIT" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit() : m_EditCtrl(_T("EDIT"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map,
// identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
...
MESSAGE_HANDLER(WM_CREATE, OnCreate)
...
// Declare an alternate message map,
// identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
// Define OnCreate handler
// When the containing window receives a WM_CREATE
// message, create the contained window by calling
// CContainedWindow::Create
LRESULT OnCreate(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& bHandled)
{
...
m_EditCtrl.Create(m_hWnd, rc, _T("hello"),
WS_CHILD | WS_VISIBLE |
ES_MULTILINE | ES_AUTOVSCROLL);
return 0;
}
...
};
| ¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº | ÂüÁ¶ |
| ÄÁÆ®·Ñ ¸¸µé±â | ATL ÀÚ½À¼ |
| ATL¿¡¼ âÀ» »ç¿ë ÇÏ ¿© | ATL â Ŭ·¡½º |
| ATL °³Ã¼ ¸¶¹ý»ç | ATL ÇÁ·ÎÁ§Æ® ¸¸µé±â |
| À©µµ¿ì | Windows ¹× Ç÷§Æû SDK ÀÇ ÈÄ¼Ó Ç׸ñ |
| ¼ºêŬ·¡½Ì | Platform SDK¿¡ Àִ â ÇÁ·Î½ÃÀú ¼ºêŬ·¡½Ì |
| Superclassing | Platform SDK¿¡ Àִ â ÇÁ·Î½ÃÀú Superclassing |
# include lt;atlwin.h>
Âü°í Ç׸ñ
CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP