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子窗口,唯一的区别是函数调用可以使用一个新的线程来创建窗口,而发送消息则不能。