ウィンドウのZ順を変更する際、
SetWindowPosでは「そのウィンドウの手前に」という指定しか無いようなのですが、
「そのウィンドウの直後に」という指定をする方法は無いのでしょうか?
直感的に「複数のウィンドウを番号順に整列させる」ということをしたいのです。
今思いついているのは
「逆の番号から順に手前に置き直していく」という方法なのですが、
これだと前面のウィンドウが何度も変わってしまいます。
とりあえず変な再描画も無く再整列はできているようなのですが、
本当にこれで問題無いのかなという疑問が残っています。
こういうふうにするしか無いのでしょうか?
それとも、「直後に」を指定する方法はあるのでしょうか?
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_setwindowpos.asp
| hWnd
| ウィンドウのハンドルを指定します。
| hWndInsertAfter
| Z オーダーを決めるためのウィンドウハンドルを指定します。hWnd で
| 指定したウインドウは、このパラメータで指定したウィンドウの後ろに
| 置かれます。
ヘルプを見る限り、hWnd が hWndInsertAfter の後ろに配置されるように
読めますけど、違うんでしょうか。
> ヘルプを見る限り、hWnd が hWndInsertAfter の後ろに配置されるように
> 読めますけど、違うんでしょうか。
あ…、そういう意味だったのですか。
MFCの「Z 順でこの CWnd オブジェクトより前に配置される
CWnd オブジェクトを識別します」という文章を読んで、
思いきり勘違いしていました。
たしかに冷静に読み直すと、勘違いしていただけのようです。
大変申し訳ありませんでした。
ということは、逆に「一つ手前に」という方法が無いということなのでしょうか。
どちらにせよ、もし「番号順に奥から置いていく」ということを
やろうと思ったら、直感的にはいかないということなのですよね…。
ツイート | ![]() |