.NETでは、非透過フォームをクリックして作成できますか?フォームのすぐ後ろにマウスのクリックをウィンドウに移すためのAPIがあるはずだと思います。どれ?.NETの不透明なクリックスルーフォーム
0
A
答えて
2
フォームのリンク先を作成するには、Windows APIからいくつかの関数をP/Invokeし、フォームのextended window stylesを設定する必要があります。 VB.NETでサンプルコードを表現することを任意に選択しました。それがあなたの好みでないなら、それは簡単にC#に変換されます。
GetWindowLong
functionで始まります。これを拡張ウィンドウスタイルの取得に使用します。
Public Const GWL_EXSTYLE As Integer = -20
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, _
ByVal nIndex As Integer) As Integer
End Function
また、追加の拡張ウィンドウスタイルを指定するには、その姉妹機能、SetWindowLong
が必要になります。
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, _
ByVal nIndex As Integer, _
ByVal dsNewLong As Integer) As Integer
End Function
そして設定する必要があります、拡張ウィンドウスタイルのための定数:
Public Const WS_EX_TRANSPARENT As Integer = &H20
をそして今、このすべてを使用するには、フォームのOnLoad
methodをオーバーライドして、次の行を追加することができます:
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
''# Call the base class implementation
MyBase.OnLoad(e)
''# Grab the current extended style information for this form
Dim initialStyles As Integer = GetWindowLong(Me.Handle, GWL_EXSTYLE)
''# Add the transparent extended window style
Dim newStyles As Integer = initialStyles Or WS_EX_TRANSPARENT
''# Update the form's extended window styles
SetWindowLong(Me.Handle, GWL_EXSTYLE, newStyles)
End Sub
もちろん、ユーザーがフォーム上の要素とやりとりすることは不可能になることに注意してください。 極端にそれを閉じるのは難しいです。これが本当にあなたがしたいことであるかどうかを慎重に検討してください。
関連する問題
- 1. 不透明度0.5
- 2. ccDrawLine不透明度?
- 3. 不透明度 - glubyte
- 4. 不透明度が
WinFormsまたはWPF? (また、これは非常に奇妙な要求のように思えますが、ユーザーは通常、不透明なウィンドウがマウスイベントを受け取ることを期待しています) –
フォームが不透明な場合にクリックするものをユーザーが把握する方法を提案しますか? –