-1

TOPMOST のウィンドウがあり、最初のウィンドウの後ろに配置したい別の (myWindow) ウィンドウがあり、2 番目のウィンドウを一番上にしたくない:

SetWindowPos(topMostWin, HWND_TOPMOST, left, top, width, height, flags);
LONG_PTR exstyle = ::GetWindowLongPtr(myWindow, GWL_EXSTYLE);
if (exstyle & WS_EX_TOPMOST)
{
    exstyle &= ~WS_EX_TOPMOST;
    if( ! ::SetWindowLongPtr(myWindow, GWL_EXSTYLE, exstyle))
    {
        LOG_ERROR();
    }
}
SetWindowPos(myWindow, topMostWin, left, top, width, height, flags);

しかし、myWindow は一番上のウィンドウのように動作し続けWS_EX_TOPMOST、拡張スタイルの myWindow のプロパティをチェックすると、まだ有効になっています。一番上のウィンドウの後にウィンドウを配置しているにもかかわらず、一番上のビットをオフにすることは可能ですか?

4

2 に答える 2

2

HWND_TOP は、ウィンドウを z オーダーの一番上に置き、一番上のウィンドウの後ろに置きます。

于 2016-01-24T22:06:16.533 に答える
1

「最上位」ウィンドウの導入の結果として、HWND_TOP はウィンドウを「最上位ウィンドウが最上位以外のウィンドウの上に常に表示されるという規則に違反することなく、Z オーダーで可能な限り高く」表示するようになりました。これは実際にはどういう意味ですか?

  • ウィンドウが一番上にある場合、HWND_TOP はそれを Z オーダーの一番上に置きます。
  • ウィンドウが最上位にない場合、HWND_TOP は最上位以外のすべてのウィンドウの最上位に配置します (つまり、最下位の最上位ウィンドウがある場合は、最下位のウィンドウのすぐ下)。

注: 上記の説明では、所有者と所有されたウィンドウの問題は完全に無視されています。メイントピックから気をそらす複雑なレイヤーを追加するため、それらを除外しました.

                                *Raymond Chen - The Old New Thing* 

Raymond のブログ サイトへのリンク

何が言い残されていますか?...

于 2016-01-25T21:23:34.050 に答える