メッセージボックスをモードレスダイアログボックスで
自作して、思う動作をさせようと下のようにプログラムを
書いてみたのですが、
(プログラムの流れは)
1,モードレスダイアログでメッセージボックスを作成、表示
2,ダイアログボックスが表示されているかどうかのフラグをセット
3,メインウインドウのActivateイベントで、もしダイアログボックスが表示されているなら
強制的にそれをアクティブにする
コード: 全て選択
'
'●メインウインドウ・クリエイト
'
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
'↓モードレスダイアログでメッセージボックスを自作
hModeLess1=CreateDialog(hMainWnd,"ModeLess1")
ShowWindow(hModeLess1,SW_SHOW)
'↓ダイアログボックスが表示されているかどうかのフラグ(TRUE=表示)
DialogExistingFlag=TRUE
End Sub
'
'●メインウインドウ・アクティブ/非アクティブ・イベント
'
Sub MainWnd_Activate(state As Integer, minimized As Integer)
'↓もしダイアログボックスが表示されているなら強制的にそれをアクティブにする
If state<>WA_INACTIVE AND DialogExistingFlag=TRUE Then
SetForegroundWindow(hModeLess1)
End If
End Sub
一応、それらしい動作はしてくれるのですがやっぱりこの方法だと
一瞬メインのウインドウがアクティブになるのでちらつきが起こります。
(メインウインドウのタイトルバーのダブルクリックで最大化などもされてしまいますし)。
このやり方ではメッセージボックス(モーダルダイアログボックス)のようなしっかりした
「モーダル」な動き、を実現するのは難しいのかなと思います。
他で良い方法があれば是非教えてください。