在 Windows 8(64 位)上为 64 位应用程序调用 CreateWindowExA 是否存在已知问题?
背景:我正在使用FOX 工具包(FOX STABLE 1.6.46)。在编译和运行最简单的Hello World示例(“hello”)时,对CreateWindowExA
文件 FXWindow.cpp:1345 中的调用返回零 HWND 句柄(但GetLastError()
不报告错误)。这只发生在一种特定的配置中:
OS | OS Platform | App compiled for | CreateWindowExA succeeds? |
Windows 7 | 32-bit | 32-bit | YES |
Windows 7 | 64-bit | 32-bit | YES |
Windows 7 | 64-bit | 64-bit | YES |
Windows 8 | 64-bit | 32-bit | YES |
Windows 8 | 64-bit | 64-bit | NO! (returns NULL) |
CreateWindowExA
最后的配置有什么不同。请注意,窗口过程在所有情况下都是相同的,并且它接收到的消息按顺序如下:
WM_GETMINMAXINFO
(转发给DefWindowProc
)WM_NCCREATE
(转发给DefWindowProc
)
在最后一个配置中,它继续,WM_NCDESTROY
然后CreateWindowExA
返回 NULL。
在所有其他配置中,WM_NCCALCSIZE
被发送,最后被发送WM_CREATE
。