スキップしてメイン コンテンツへ

 locked
TOPMOST ウィンドウがほかのウィンドウの背後に移動してしまう RRS feed

  • 全般的な情報交換

  • こんにちは、Platform SDK (Windows SDK) サポートチームです。
    今回は、WS_EX_TOPMOST 属性を持ったウィンドウがほかのウィンドウの背後に移動してしまう現象についてご案内します。

    現象
    ========
    拡張ウィンドウ スタイルに WS_EX_TOPMOST 属性を指定して作成したウィンドウは、TOPMOST ウィンドウと呼ばれます。
    TOPMOST ウィンドウは、TOPMOST ではない通常のウィンドウよりも常に手前に表示されます。

    ところが、頻繁にウィンドウを切り替えたり、メモ帳や Internet Explorer など、ほかのウィンドウをアクティブにして入力作業をしたりする過程で、ごく稀に TOPMOST ウィンドウが通常のウィンドウの背面に移動してしまう現象が発生するとお問い合わせいただいています。

    • Windows 8.1 以降、Windows 10 でも数十回に 1 回程度この現象が発生します。
    • このとき TOPMOST ウィンドウをクリックしてほかのウィンドウより手前に移動しようとしても、現在の位置から手前に移動しないことがあります。
    • Win32 API を使用してウィンドウを列挙しても、TOPMOST ウィンドウが手前に存在しているように見えるとの報告もあります。

    解決方法
    ========
    マイクロソフトでは、このような現象が発生していることを認識しています。
    現象が発生した場合、以下の方法をお試しください。

    1.  一度ほかの通常ウィンドウをクリックするなど、アクティブ ウィンドウを変えてから TOPMOST ウィンドウをクリックします。
    2.  アプリケーションからは、一度 WS_EX_TOPMOST 属性をはずして、再度 WS_EX_TOPMOST 属性を設定します。
    3.  可能であれば、一度 TOPMOST ウィンドウを閉じて再度開きます。

    参考情報
    ========
    SetWindowLongW function (GWL_EXSTYLE)
    https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlongw



    2019年11月8日 4:28
    所有者