gpt4 book ai didi

c++ - WM_CREATE 似乎没有在子窗口中处理

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:29 25 4
gpt4 key购买 nike

我有一个窗口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 消息的解释。

最佳答案

大概 cyChar 是窗口过程的本地。不是WM_CREATE没有被处理的问题,是你在WM_CREATE中赋值的cyChar不是同一个cyChar 您在 WM_PAINT 中使用的。您需要将变量设置为全局变量或静态变量,以便它在一次调用窗口过程到另一次调用后仍然存在。

关于c++ - WM_CREATE 似乎没有在子窗口中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com