Odd conditional statement behavior in my windowProc function
我遇到一个奇怪的问题,其中开关/大小写将到达HandleEvent,但消息将不会到达适当的IF语句。
例如,按原样使用HandleEvent,当我按下红色的X时,我的窗口将不会关闭。消息将为WM_CLOSE(我已选中),但是由于某些原因,如果if语句处理不正确。
起初我以为WM_CLOSE案件永远都不会达成,但是如果我注释掉其他案件,那还是行不通。 但是,如果我取出WM_ACTIVATEAPP和WM_SHOWWINDOW的IF语句,则将执行正确的语句。 即使我删除了" else if"并只是将它们设置为常规IF,它也不起作用。 为什么在这里选择正确的not IF语句? 信息就是信息,您知道吗? 我不明白...它应该到达正确的位置!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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); } |
1 | message = WM_SHOWWINDOW |
哎呀
避免这种情况的一种好方法是使用
在整个代码中随意散布。
实际可行的地方。