Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


42729 / 76732 ←次へ | 前へ→

【39065】Re:ControlTipText が下に隠れないようにしたい
回答  bykin  - 06/6/16(金) 21:55 -

引用なし
パスワード
   こんばんわ。

>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を最前面にしてます。

試してみてな。
ほな。

2 hits

【39008】ControlTipText が下に隠れないようにしたい 西谷 さくら 06/6/15(木) 21:32 質問
【39065】Re:ControlTipText が下に隠れないようにし... bykin 06/6/16(金) 21:55 回答
【39073】Re:ControlTipText が下に隠れないようにし... bykin 06/6/17(土) 10:34 発言
【39078】Re:ControlTipText が下に隠れないようにし... 西谷 さくら 06/6/17(土) 15:57 お礼
【39087】Re:ControlTipText が下に隠れないようにし... bykin 06/6/17(土) 17:28 発言
【39105】Re:ControlTipText が下に隠れないようにし... 西谷 さくら 06/6/17(土) 22:33 お礼

42729 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free