好的,首先对我的尝试做一点概述。
我试图在主父窗口中创建3个子窗口,并使用EnumChildWindow
和EnumChildProc
枚举它们,我想创建3个与父级相同高度的子窗口,但是1/3宽度,并将它们一个接一个地对齐..
所以,我捕获WM_CREATE
msg来创建那些子窗口,WM_SIZE
使用MoveWindow
移动和对齐它们,一切都很好,除了没有子窗口的事实创建。当我调试它时,我发现(在Visual Studio 2008的Autos窗口中,在调试时)我的CreateWindowEx语句没有被执行(autos窗口说“表达式无法评估。”
以下是声明:
CreateWindowEx(0, (LPCWSTR)("childClass"), (LPCWSTR)NULL, WS_CHILD | WS_BORDER, 0, 0, 0, 0, hWnd, (HMENU) (int) (ID_FIRSTCHILD + 1), hInst, NULL);
当然我在for循环中使用它来创建3个窗口,但那是另一回事......
那么,任何人都可以帮助/指导/建议我这里发生了什么?或者我做错了什么?
答案 0 :(得分:1)
我的精神力量建议您需要将WS_VISIBLE样式传递给上面的CreateWindow调用以用于您的子窗口 - 这样您就可以看到它们。 :)
我的开发经验表明如下:
CreateWindowEx的返回值是多少?您是否将返回值分配给变量。如果是这样,你在调试器中的那一行设置了一个断点吗?如果CreateWindow的返回值为NULL,那么什么是GetLastError(您可以在调试器中将其评估为“@err”)。
弹出主窗口后(子项不可见),您是否运行Spy ++以查看子窗口是否存在?他们的状态是什么?
否则,您是否验证了您的子窗口类的WndProc的WM_CREATE回调被调用?