【发布时间】:2010-10-30 19:46:36
【问题描述】:
在我看来,窗口过程的 WM_CREATE 消息的一种用途是减轻调用者在窗口初始化时执行静态代码的负担。我的窗口是执行WM_CREATE消息中的一些代码,包括ShowWindow函数。我还希望 ShowWindow 根据 WinMain 中的 nCmdShow 参数正常运行。所以这里是伪代码来展示我是如何设置的:
int g_nCmdShow;
WinMain(..., int nCmdShow)
{
g_nCmdShow = nCmdShow;
...
CreateWindow(..., WM_OVERLAPPEDWINDOW, ...)
...
}
WndProc()
{
...
WM_CREATE:
...
ShowWindow(hWnd, g_nCmdShow);
...
...
}
所以我将程序设置为最小化运行(使用 Windows XP,我创建了 .exe 的快捷方式,并相应地设置了它的属性),它在任务栏上显示为最小化,但当我单击时它不会恢复在上面。同样,如果我将它最大化运行,当我单击最大化按钮(取消最大化它)时它的行为不正确。
在 WM_CREATE 消息中使用兼容 nCmdShow 的 ShowWindow 的正确方法是什么?
【问题讨论】:
-
我觉得你在 WM_CREATE 做这样的工作有点早了。
-
请详细说明一下?除了 WM_CREATE 之外,还有其他我应该处理的后续消息吗?