dポイントプレゼントキャンペーン実施中!

ユーザーフォームの背景だけを
完全に透明にすることは出来ますか?

調べてみると他のコントロールも
透明になるコードが見つかりました。
もし背景だけというのが可能であれば
回答お願いします。

A 回答 (1件)

プロパティでは設定できないようです。


下記のコードを標準モジュールとuserformにそれぞれ貼り付けたところ、
実現できました。

http://shoji.blog1.fc2.com/blog-entry-48.html
を参考に、Public Const LWA_ALPHAだけをいじったものです。


(標準モジュール)
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal classname As Any, ByVal winname As Any) As Long
Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd&, ByVal idx&, ByVal style&) As Long
Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd&, ByVal idx&) As Long
Public Declare Function SetLayeredWindowAttributes Lib "user32" _
(ByVal hwnd&, ByVal crKey As Long, _
ByVal bAlpha As Long, ByVal dwFlags As Long) As Long

Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_TOOLWINDOW = &H80
Public Const WS_EX_LAYERED = &H80000

Public Const LWA_COLORKEY = 1
Public Const LWA_ALPHA = 255


Sub test()
UserForm1.Show
End Sub

(フォーム)
Private Sub UserForm_Initialize()
hwnd& = FindWindow("ThunderDFrame", Me.Caption)
If hwnd& <> 0& Then
SetWindowLong hwnd&, GWL_EXSTYLE, _
GetWindowLong(hwnd&, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes hwnd&, 0, 192, LWA_ALPHA
End If
End Sub

参考URL:http://shoji.blog1.fc2.com/blog-entry-48.html

この回答への補足

遅れて申し訳ありません
別の方法が見つかったので締め切らせていただきます
回答していただきありがとうございました

補足日時:2014/11/29 23:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!