这个 CreateWindowEx 函数有什么问题?

What's wrong with this CreateWindowEx function?

本文关键字:问题 什么 CreateWindowEx 函数 这个      更新时间:2023-10-16

好了,首先简单介绍一下我要做的事情。
我试图在主父窗口中创建3个子窗口,并使用EnumChildWindowEnumChildProc枚举它们,我想创建3个子窗口的高度相同的父,但1/3的宽度,并对齐他们一个接一个..

所以,我捕获了WM_CREATE msg来创建这些子窗口,WM_SIZE来移动并使用MoveWindow对齐它们,除了没有创建子窗口之外,一切都很好。当我调试它时,我发现(在Visual Studio 2008的自动窗口中,在调试时)我的CreateWindowEx语句没有被执行(自动窗口说"表达式不能被评估。"

语句如下:

CreateWindowEx(0, (LPCWSTR)("childClass"), (LPCWSTR)NULL, WS_CHILD | WS_BORDER, 0, 0, 0, 0, hWnd, (HMENU) (int) (ID_FIRSTCHILD + 1), hInst, NULL);

当然,我是在for循环中使用它来创建3个窗口,但这是另一回事…
所以,有没有人可以帮助/指导/建议我在这里发生了什么?或者我做错了什么?

ps:我正在阅读这本电子书,从我得到这个代码和所有,所以请不要要求我采用另一种方法或什么,说把孩子创建代码在其他地方…因为我没有编写任何程序,而只是遵循一本书的示例…:)

我的精神力量建议你需要在WS_VISIBLE样式中传递给上面的子窗口CreateWindow调用-这样你就可以看到它们了。:)

我的开发经验建议如下:

CreateWindowEx的返回值是多少?你是否将返回值赋给了一个变量。如果是这样,您是否在调试器的那一行设置了断点?如果CreateWindow的返回值是NULL,那么GetLastError是什么(你可以在调试器中评估为"@err")。

主窗口弹出后(子窗口不可见),你是否运行spy++查看子窗口是否存在?它们的状态是什么?

否则,你是否验证了WM_CREATE回调你的子窗口类的windowproc正在被调用?