SetForegroundWindow失效的问题

2018-08-21  本文已影响0人  叶迎宪

试验出来的SetForegroundWindow失效的情况之一,是窗口被最小化了。解决的方法是

    ::ShowWindow(wnd_, SW_SHOWNORMAL);
    ::SetForegroundWindow(wnd_);

网上的万金油做法是

    HWND hForeWnd = ::GetForegroundWindow();
    DWORD dwForeID = ::GetWindowThreadProcessId(hForeWnd, NULL);
    DWORD dwCurID = ::GetCurrentThreadId();
    ::AttachThreadInput(dwCurID, dwForeID, TRUE);
    ::ShowWindow(wnd_, SW_SHOWNORMAL);
    ::SetWindowPos(wnd_, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
    ::SetWindowPos(wnd_, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
    ::SetForegroundWindow(wnd_);
    ::AttachThreadInput(dwCurID, dwForeID, FALSE);

感觉SetWindowPos也不是必须的

上一篇 下一篇

猜你喜欢

热点阅读