关于c ++:我的windowProc函数中的奇数条件语句行为

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

哎呀

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

在整个代码中随意散布。

实际可行的地方。