本例练习消息窗体的实现以及消息窗体收发消息; 对消息窗体的定义MSDN里描述大体是这样的, 父窗体指定为HWND_MESSAGE常量,它可以收发消息,没z-order, 不可遍历且不无能接收到广播消息仅做简单的消息分发; 我们可以在创建窗体时指定其父窗体为HWND_MESSAGE常量也可以将现有窗体通过SetParent将父窗体设为HWND_MESSAGE常量从而达到变成消息窗体的目的;
查找消息窗体句柄, 可以通过FindWindowEx这个函数将其hParent设为HWND_MESSAGE, 并指定类名或窗体名即可找到;
一、代码演示(为了方便演示提供了二个工程分别为Demo0050 – 实现消息窗体创建以及接受消息和发送消息; Demo0050Ex – 实现消息的发送以及广播消息的接收
1. 创建消息窗体(Demo0050)
//////////////////////////////////////////////////////////////////////////
HWND CreateWnd(const TCHAR* szClsName, const TCHAR* szWndCaption, HWND hParent = NULL,
DWORD dwStyle = WS_POPUP|WS_VISIBLE|WS_SYSMENU|WS_CAPTION,
DWORD dwStyleEx = 0)
{
if (NULL != szClsName)
{
HWND hWnd = CreateWindowEx(dwStyleEx, szClsName, szWndCaption, dwStyle,
0, 0, 800, 480, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
if (NULL != hWnd && IsWindow(hWnd))
{
return hWnd;
}
}
return NULL;
}