我有一个窗口HWND assignWnd
,它是主窗口的子窗口。此窗口似乎不处理WM_CREATE消息。例如,这是我的窗口过程中的WM_CREATE消息。
case WM_CREATE:
{
hdc = GetDC(assignWnd);
GetTextMetrics(assignWnd,&tm);
cyChar = tm.tmHeight + tm.tmExternalLeading;
ReleaseDC(assignWnd,hdc);
return 0;
}
变量cyChar
是int
,并在窗口过程中声明。稍后将在WM_PAINT消息中使用它。每当我编译程序时,我都会收到运行时错误,指出cyChar
在初始化之前正在使用。但是,如果我将上述代码放在WM_PAINT消息中,程序将按预期工作。
显而易见的问题是,我不希望每次绘制窗口时都会进行这些调用。我希望在WM_CREATE消息期间处理这些命令(以及其他命令)。
非常感谢有关在此子窗口中未处理WM_CREATE消息的原因的任何解释。
答案 0 :(得分:1)
据推测,cyChar
是窗口过程的本地。这不是WM_CREATE
未被处理的问题,而是cyChar
中分配的WM_CREATE
与您在cyChar
中使用的WM_PAINT
不同。您需要将变量设置为全局变量或静态变量,以便从一次调用窗口过程到另一次调用。