首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

WM_MDICREATE是被哪个函数处理的?该怎么处理

2012-03-04 
WM_MDICREATE是被哪个函数处理的?????创建MDI子窗口时,我追踪代码到下边:BOOLCMDIChildWnd::Create(LPCTST

WM_MDICREATE是被哪个函数处理的?????
创建MDI子窗口时,我追踪代码到下边:
BOOL   CMDIChildWnd::Create(LPCTSTR   lpszClassName,
              LPCTSTR   lpszWindowName,   DWORD   dwStyle,
              const   RECT&   rect,   CMDIFrameWnd*   pParentWnd,
              CCreateContext*   pContext)
{
.......................................
              AfxHookWindowCreate(this);
        //发送WM_MDICREATE消息,创建了MDI子窗口
              HWND   hWnd   =   (HWND)::SendMessage(pParentWnd-> m_hWndMDIClient,
                            WM_MDICREATE,   0,   (LPARAM)&mcs);
              if   (!AfxUnhookWindowCreate())
                            PostNcDestroy();                 //   cleanup   if   MDICREATE   fails   too   soon
        ……
              return   TRUE;
}
          问题是(WND)::SendMessage(pParentWnd-> m_hWndMDIClient,
                            WM_MDICREATE,   0,   (LPARAM)&mcs);跟踪不进去,
          1.WM_MDICREATE到底是被哪个窗口过程处理了???
          2.这里为什么不换成::CreateWindowEX()?
          3.MDI子窗口是通过::CreateWindowEX(创建的么??
请解答!!!

[解决办法]
到 vc里问问 ..
[解决办法]
1、是被window系统内置的 "MDICLIENT "窗口类处理了。
2、可以换成CreateWindowEx:CreateWindowEx(dwExStyle|WS_EX_MDICHILD, m_szClassName, lpszWindowName, dwStyle, x, y, cx, cy, hMDIClient, hMenu, hInst, pvParam);
3、是通过CreateWindowEx创建的
[解决办法]
1、WM_MDICREATE消息应该是由系统处理的,处理完之后向MDI子窗口发送WM_CREATE消息
2、除了发送WM_MDICREATE消息外,也可以使用CreateMDIWindow来创建MDI子窗口,唯一的区别是函数调用可以使用一个新的线程来创建窗口,而发送消息则不能。

热点排行