DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NETでフローティングウィンドウ作成

環境/言語:[VB.NET2003]
分類:[.NET]

VB.NETでフローティングウィンドウを作成する事は可能でしょうか?
開発環境はVB.NET2003です。

やりたい事は以下です。
MDI環境にて
・親フォームの外に出せる
・常に最前面にある
・フローティングウィンドウ内での操作をしている場合でも親フォームがアクティブ状態となる

親フォームの外に出せるウィンドウで、常に親フォームがアクティブという状況が作り出せません。
フォームオブジェクトにOwnerFormを設定すれば外には出せますが、フォーカスがそのフォームに移ってしまいますので‥。

作成可能であればヒントを頂けないでしょうか。
よろしくお願いします。
■No18849に返信(たまさんの記事)
親フォームの外に出せるという意味が分かりませんが、アクティブにならないウィンドウということでは、前にこの掲示板で質問がありました。そのときに提案した方法が、WM_NCACTIVATEをつぶす方法です。ただしこの方法では、はじめに表示されたときにアクティブになってしまいますので、フォームを表示した直後にメインフォームのActivateを呼び出すなどの必要があります。

Const WM_NCACTIVATE As Integer = &H86

Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_NCACTIVATE Then
If m.WParam <> IntPtr.Zero Then
m.WParam = IntPtr.Zero
End If
End If
MyBase.WndProc(m)
End Sub

↓に詳しいこと説明があるようです。

vbAccelerator - Use .NET Forms as Popup Windows
http://www.vbaccelerator.com/home/NET/Code/Controls/Popup_Windows/Popup_Windows/article.asp

DOBON.NET | プログラミング道 | プログラミング掲示板