|
こんばんわ。
>controltiptextがこの2つ目のWindowの下に隠れてしまいます。
ほんまやねー。
コントロールチップは別のウィンドウってことなんやろね。
せやから最前列に固定してるユーザーフォーム(=ウィンドウ)の裏に隠れるわけ。
・・・で、こんなん考えてみました。
(標準モジュール)----------------------------------------------------------
Public Declare Function GetActiveWindow Lib "user32" () As Long
Public Declare Function SetWindowPos Lib "user32" _
(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
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpszClassName As String, _
ByVal lpszWindow As String) As Long
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOACTIVATE = &H10
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Flg As Boolean
Public Sub test()
Flg = False
UserForm1.Show vbModeless
End Sub
Public Sub SetTopMost(Optional ByVal Dummy As Boolean)
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", UserForm2.Caption)
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE
End Sub
(UserForm1モジュール)-----------------------------------------------------
Private Sub CommandButton1_Click()
Flg = True
UserForm2.Show vbModeless
End Sub
Private Sub UserForm_Activate()
Dim hWnd As Long
If Flg Then
Application.OnTime Now(), "SetTopMost"
End If
End Sub
Private Sub UserForm_Terminate()
Unload UserForm2
End Sub
(UserForm2モジュール)-----------------------------------------------------
Private Sub UserForm_Activate()
Dim hWnd As Long
hWnd = GetActiveWindow()
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
Private Sub UserForm_Terminate()
Flg = False
End Sub
UserForm2をアクティブにしたときには最前面にはせず、UserForm1をクリックしたとき
(=UserForm1をアクティブにしたとき)にのみ、UserForm2を最前面にしてます。
試してみてな。
ほな。
|
|