【问题标题】:Window does not get displayed(Maximized) after Minimizing最小化后窗口不显示(最大化)
【发布时间】:2011-01-24 07:29:30
【问题描述】:

我有一个记录移动设备击键的 Windows CE 应用程序。有一个按钮来初始化录制功能,通过调用强制主窗口最小化:

ShowWindow (hWnd, SW_MINIMIZE);

在最小化窗口之前,我注册触发按钮事件(通过自定义 API)。当应用程序最小化时,我执行一些按钮单击并按下触发按钮以结束会话。当我收到触发按钮事件时,我调用:

ShowWindow (hWnd, SW_MAXIMIZE);

问题是窗口没有最大化。如果我调试应用程序,我可以看到调用了 ShowWindow 函数。我可以通过 TaskManager 切换到应用程序将它带到前台。

有人能解释一下这个问题的原因并提出我可以采取的任何解决方案吗?

编辑: 解决方案: 在调用 ShowWindow 之前调用“SetForegroundWindow”并使用 SW_RESTORE 而不是 SW_MAXIMIZE。 SW_MAXIMIZE 不起作用。

SetForegroundWindow (g_hWndMain);
ShowWindow (g_hWndMain, SW_RESTORE);

【问题讨论】:

    标签: c++ winapi windows-ce


    【解决方案1】:

    Showwindow 可能因多种原因而失败。

    你可以试试:

    1) 设置前景

    SetForegroundWindow

    WinCE具体参考下面MSDN文章。
    http://msdn.microsoft.com/en-us/library/ms940024.aspx

    SetForegroundWindow((HWND)(((ULONG) hwnd) | 0x01) );

    2) 放在前面

    BringWindowToTop
    http://msdn.microsoft.com/en-us/library/ee504610.aspx

    【讨论】:

    • 谢谢 9dan! SetForegroundWindow 就像一个魅力。我在调用 SW_MAXIMIZE 之前调用了它,现在窗口显示没有问题。第二种方法似乎不起作用。再次感谢您
    【解决方案2】:

    ShowWindow(HWND hWnd, int nCmdShow)中的第二个参数可以取值:

    SW_HIDE, SW_SHOW, SW_SHOWNA, SW_SHOWNORMAL
    

    最后一个激活并显示窗口;它将恢复到原来的大小和位置。

    关于 WinCE 中的 windows 功能,您可以阅读MSDN

    【讨论】:

    • SHOWNORMAL 似乎也不起作用。我的问题似乎比简单地最小化和恢复应用程序要复杂一些。可能是因为我在最小化监控应用程序时打开/关闭了其他应用程序。我已经尝试过 ShowWindow、MoveWindow 和 SetWindowPos 的组合,但它们似乎都不起作用。
    • SW_SHOWNORMAL 将恢复窗口;如果它被最大化,它应该恢复到那个状态,但是使用这个参数它不会被最大化。我想说你应该注意这些参数,SW_MAXIMIZE 不应该与这个函数一起使用(我们谈论的是 Win CE),你可以通过我上面发布的链接阅读它。我不确定是否有最大化窗口的方法(我不是 Win CE 程序员),但棘手的解决方案是使用 SetWindowPos 或 MoveWindow 来布局窗口。问候。
    【解决方案3】:

    尝试先恢复窗口,然后最大化。

    我没有 Windows CE,所以无法测试,但应该可以。

    干杯,

    【讨论】:

    • 谢谢阿尔夫。我尝试将 SW_RESTORE 放在最大化之前,但它仍然不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多