gpt4 book ai didi

c++ - 我的 windowProc 函数中的奇怪条件语句行为

转载 作者:行者123 更新时间:2023-11-28 02:50:20 26 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,switch/case 将到达 HandleEvent 但消息不会到达适当的 IF 语句。

例如,使用 HandleEvent 时,当我点击红色 X 时我的窗口不会关闭。消息将是 WM_CLOSE(我检查过),但出于某种原因,if 语句未正确处理。

一开始我以为WM_CLOSE这个case从来没有到过,但是如果我注释掉其他的case,还是不行。但是,如果我取出 WM_ACTIVATEAPP 和 WM_SHOWWINDOW 的 IF 语句,将执行正确的语句。即使我删除了“else if”并使它们成为常规 IF,它也不起作用。为什么要在这里选择正确的非 IF 语句?消息就是消息,你知道吗?我不明白...它应该到达正确的位置!

LRESULT CALLBACK foo::WindowProc(HWND window, UINT message, WPARAM wparam, LPARAM lparam) {

switch(message) {
case WM_ACTIVATEAPP:
case WM_SHOWWINDOW:
case WM_CLOSE:
// Test for window
if ((window == fooWindow) && (foo->HandleEvent(message, wparam, lparam)))
{
return ( 0 );
}

break;
}

return DefWindowProcW(window, message, wparam, lparam);
}

bool foo::HandleEvent(UINT message, WPARAM wparam, LPARAM lparam) {

if ( message == WM_ACTIVATEAPP ) {
if ( wparam )
{
// Stuff
ShowWindow(fooWindow, SW_RESTORE);
} else {
// Stuff
ShowWindow(fooWindow, SW_MINIMIZE);
}
} else if ( message = WM_SHOWWINDOW ) {
if ( wparam )
// Stuff
else
// Stuff
} else if ( message == WM_CLOSE ) {
// Stuff
}

return (true);
}

最佳答案

message = WM_SHOWWINDOW

糟糕。


避免这种情况的一个好方法是使用 const

在整个代码中大量使用它。

在可行的地方。

关于c++ - 我的 windowProc 函数中的奇怪条件语句行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208755/

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