プログラムがあまりにも達成するために、フォームのトップだったかどれですか?

これは、他のウィンドウ、確認、ない彼上記の通常のウィンドウの右上隅にあるマイクロチャンネルチャットウィンドウとしての私の爪、上のウィンドウの一番上のボタンを許可していませんが、ない絶対的な、トップウィンドウはまた、上書きできる性質を持っています彼は、これらはWINDOWSAPI SetWindowPos関数によって行われます。

SetWindowPos

ポップアップまたはトップレベルウィンドウのサイズ、位置、およびZオーダー、子ウィンドウを変更します。これらのウィンドウは、画面上に出現に従って順序付けされています。最も最高のランキングを取得するためのウィンドウの上部、及びZは、最初のウィンドウの順序です。
ここに画像を挿入説明
7つのパラメータが、機能上、唯一のhWnd(トップにウィンドウハンドル)、hWndInsertAfter(Zにおいて同定順に)、uFlags(ウィンドウフラグ)を達成します。

以下の値ができhWndInsertAfter:
1.HWND_BOTTOM:1の値は、ウィンドウの下部に配列Z。hWndパラメータを識別する最上位のウィンドウ場合、ウィンドウは上部位置を失い、他方は、ウィンドウの最下部に設定されています。

2.HWND_NOTOPMOST:値-2、すべてのトップレベルウィンドウ上記非ウィンドウ(すなわち、すべてのトップレベルウィンドウの後)。ウィンドウが非トップレベルウィンドウがある場合、フラグは影響を及ぼしません。

3.HWND_TOP:0の値は、ウィンドウがZオーダーの上に配置されています。

4.HWND_TOPMOST:-1、窓はすべての非トップレベルのウィンドウの上に置かれています。ウィンドウがない場合でも、アクティブウィンドウは、トップの位置のままになります

明らかに-1を使用し、

uFlagsは、非常に多くの価値表示されていないが、SWP_NOSIZE SWP_NOMOVEを取るとパラメータを無視するように、YをX、CX、CY、すなわちウィンドウのサイズと位置を無視し、それ以外の場合SetWindowPosは位置とサイズ、または値の組み合わせを再定義します接続動作、SWP_NOSIZE値1,2のSWP_NOMOVE値、すなわち、最後の値1 | 2 = 3。

一例であることを取るVB、実行した後、ウィンドウが粘着性のある、彼は彼の上にすることができ、他の、また他のセットトップウィンドウ上のウィンドウの一番上に行くことができます。

Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_SHOWWINDOW As Long = &H40
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const HWND_TOPMOST As Long = -1

Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
End Sub

ここに画像を挿入説明

公開された42元の記事 ウォン称賛7 ビュー7733

おすすめ

転載: blog.csdn.net/HouXinLin_CSDN/article/details/104423232