返回信息流主窗口中消息处理函数如下:
……
case WM_CREATE:
if (!childWindowRegisterClass(L"child window"))
{
break;
}
hWndChildWindow = CreateWindowEx (WS_EX_CONTEXTHELP | WS_EX_CLIENTEDGE | WS_EX_TOPMOST,
szWindowClass, szTitle,
WS_CHILD | WS_HSCROLL, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
hWnd, NULL, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
ShowWindow(hWndChildWindow, SW_SHOWDEFAULT);
break;
……
//childWindowRegisterClass函数:
ATOM childWindowRegisterClass( TCHAR* windowClass )
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = MyDlgProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = NULL;
wcex.hIcon = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+2);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = windowClass;
wcex.hIconSm = NULL;
return RegisterClassEx(&wcex);
}
红色的那里:
wcex.hInstance该赋什么值呢?MSDN的解释是
hInstance
Handle to the instance that contains the window procedure for the class.
但是我该对其赋何值呢?主窗口中的hInstance是程序入口_tWinMain带的参数,但是子窗口的hInstance值为什么?
谢谢!
这是一条镜像帖。来源:北邮人论坛 / cpp / #9384同步于 2008/7/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]关于Win32 API创建子窗口
FadeToBlack
2008/7/8镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
原来HINSTANCE是指向当前进程实例啊,我理解错了。谢谢!
【 在 ttplayer 的大作中提到: 】
: 还是那个,你这又没多进程,只有一个实例(instance)
有人能帮我看一下程序吗?子窗口创建还是不成功。
程序就是创建两个窗口。子窗口标题栏上有一个"?"的按钮。点击之后父窗口接收到消息。
用VS建个Win32 Project(比如a.proj),然后把附件里的代码复制到a.cpp中就行了。
P.S. 要在Resource.h定义一下UM_CHILDHELP消息。
附件(2.3KB) Example2_CreateWindowEx.zip
谢谢!