【问题标题】:How to get the HWND of the next window that will be active when you minimize the foreground window?最小化前台窗口时如何获取下一个将处于活动状态的窗口的 HWND?
【发布时间】:2022-08-13 22:32:09
【问题描述】:

场景:前台有X的窗口,当你最小化它时,它会将窗口Y带到前台或桌面。

在最小化X 之前,我可以使用什么WINAPI 来获得YHWND

我试过这个:

HWND hWndnext = GetWindow(hWnd, GW_HWNDNEXT);

但它没有返回我正在寻找的HWND

我试图在尝试最小化时将我的窗口设置为透明,但不让它被最小化,在它变得透明后,激活/聚焦它真正被最小化的下一个窗口案例,然后再次点击它恢复透明度为默认值。

我的第二次尝试是:

case WM_SYSCOMMAND:
{
    if (wParam == SC_MINIMIZE) {

        DefWindowProc(hWnd, msg, wParam, lParam);

        BYTE alpha = GetWindowAlpha(hWnd) ? 0 : 255;

        // Update the window transparency.
        DWORD exstyle = GetWindowLongW(hWnd, GWL_EXSTYLE);
        SetWindowLongW(hWnd, GWL_EXSTYLE, exstyle | WS_EX_LAYERED);
        SetLayeredWindowAttributes(hWnd, 0, alpha, LWA_ALPHA);

        // Attempt to restore the window without activating it.
        ShowWindow(hWnd, SW_SHOWNOACTIVATE);
        return 0;

    }
    break;
}

但它仍然没有将下一个窗口聚焦到任务栏中。

  • 听起来像XY problem。您试图用问题中发布的 Y 解决的实际问题 X 是什么?
  • 没有这样的 API。最小化该窗口,然后调用 GetForegroundWindow() 以查看下一步。

标签: c++ winapi


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 2014-06-23
    • 2020-02-03
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多