当前位置: 首页 > 知识库问答 >
问题:

我的windowProc函数中的奇数条件语句行为

郎健柏
2023-03-14

我遇到了一个奇怪的问题,开关/大小写将到达Handle事件,但消息不会到达适当的IF语句。

例如,如果使用Handle事件,当我点击红色X时,窗口不会关闭。消息将WM_CLOSE(我选中了),但是由于某种原因,if语句没有得到正确处理。

起初我以为WM_CLOSE的案例永远不会被联系到,但是如果我评论其他案例,它仍然不起作用。然而,如果我取出WM_ACTIVATEAPP和WM_SHOWWINDOW的IF语句,正确的语句将执行。即使我去掉“其他如果”,让它们成为常规的如果,它也不起作用。为什么在这里选择正确的not 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);
}

共有1个答案

曾航
2023-03-14
message = WM_SHOWWINDOW

哎呀。

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

把它随意地洒在代码上。

在实际可行的地方。

 类似资料:
  • 问题内容: 有没有一种方法可以用with语句开始代码块,但是有条件地? 就像是: 为了明确起见,一种情况将在with语句中包含一个块,而另一种可能性将是相同的块,但未包含(即,好像没有缩进) 当然,最初的实验会产生压痕错误。 问题答案: 如果要避免重复代码,并使用3.7(引入时)甚至3.3(引入时)之前的Python版本,则可以执行以下操作: 要么: 然后将其用作: 您也可以根据返回不同的值。 (

  • return语句用来从一个函数 返回 即跳出函数。我们也可选从函数 返回一个值 。 使用字面意义上的语句 例7.7 使用字面意义上的语句 #!/usr/bin/python # Filename: func_return.py defmaximum(x, y):     ifx > y:         returnx     else:         returny printmaximum(

  • 问题内容: 函数声明如何处理? 此示例在Chrome和Firefox中产生不同的输出。Chrome输出,而FF输出。 问题答案: 当问这个问题时,ECMAScript5(ES5)盛行。在ES5的严格模式下,函数声明不能​​嵌套在一个块中,如问题所示。在非严格模式下,结果是不可预测的。不同的浏览器和引擎针对如何处理块内的函数声明实现了自己的规则。 许多浏览器都支持ECMAScript2015(ES2

  • 我试图在一个保护语句中调用一个名为“nextPage”的函数,但它说“()”不能转换为“Bool”。要调用此函数,我需要做什么

  • 我有一个数组,它将被迭代,并取决于条件执行任务 我已经用if else完成了这个操作,并用switch,条件是如果(1&&2)(然后执行A)else if(1)(然后执行B)else if(2)(然后执行c)else if(none)(然后执行D) if else工作正常,但是需要对Switch语句进行哪些修正 对于ref=Javascript用数组或字符串切换大小写

  • 跟其它程序设计语言一样,Bash中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式。 条件表达式可以包含&&和||运算符,分别对应 与 和 或 。除此之外还有很多有用的表达式。 共有两个不同的条件表达式:if和case。 基元和组合表达式 由[[ ]](sh中是[ ])包起来的表达式被称作 检测命令 或 基元。这些表达式帮助我们检测一个条件的结果。在下面的表里,为