<ウィンドウを常に手前> 今回はMyColorCheckerの重要な機能のひとつである Top Most (ウィンドウを常に手前に表示する)機能について書きます。 この機能を実現する関数は下記に示す SetWindowPos 関数です。 BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); これはウィンドウの位置とZオーダーを変更する為の関数です。
Zオーダーというのは、スクリーン上のウィンドウの重なりの順序
を決めるものです。ウィンドウはすべてデスクトップを根底とした
親子関係にあります。(理論上のことで実際に重なっているわけでは
ありませんが。。。)
X と Y はウィンドウの左上の座標をクライアント座標で、 cx と cy はウィンドウの幅と高さをそれぞれ指定しますが、次の uFlags で、 SWP_NOMOVE と SWP_NOSIZE を指定すれば、現在の位置とサイズを維持します。 uFlags に指定できるパラメータはたくさんあるので、この2つ以外については MSDNでお調べください。「setwindowpos uflags」で検索すると出てきます。
実際の使い方ですが、いつもの通り私のプログラムコードから 抜粋させていただきます。 /* Top Most を設定 */ SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); /* Top Most を解除 */ SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); |
Copyright (c) 2003-2004 HIDEKAZU KAJIURA. All Rights Reserved. |