メニューバーのメニューの Enabled プロパティをFalse にして禁止しているのに
その(淡色表示となった)メニューをクリックするとフォーカスが移動してしまうようです。淡色表示になるのですが、クリックするとへこむんです。かといってイベントは発生しません。他の場所(プログラム実行中)で、DoEvents でosに制御を戻すのですが、メニューバーをクリックすると(Flaseにしているのに)osから制御が戻ってきません。なにか解決方法はないのでしょうか?
その現象はウィンドウのタイトルバーをドラッグ中にも起こっていませんか?
編集 削除ドラッグ中では、ありません。具体的にいうと
フォームにボタン1つ、プログレスバーを1つ貼り付けて、
メニューをmnuOption を追加します。
メインフォームでボタンを押すと以下のようなプログレスバーを単純に
表示するような処理をおこないます。そのままだと制御が戻ってこなくなるので
DoEvents をいれておきます。
ボタンを押すとプログレスバーに経過が表示され始めます。そこで 淡色表示の
メニュー mnuOptionをクリックするとmnuOption がへこんだままプログレスバーの表示が止まってしまいます。(制御が戻らないようです)
mnuOption.Enabled = False を True にしておけば、クリックした時
だけ制御が移るようです。淡色表示の時になぜ制御が戻ってこないのでしょうか?
Private Sub Command1_Click()
Dim i As Integer, j As Integer
mnuOption.Enabled = False
For i = 0 To 1000
For j = 0 To ProgressBar1.Max
ProgressBar1.Value = j
DoEvents
Next j
Next i
End Sub
ヒント
http://madia.world.coocan.jp/vb/vb_bbs2/200403_04030032.html
鍵
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/MENUITEMINFO.html
SetMenuInfo API関数で、モードレスメニューにしてしまう。
ってのはありかな?
ご回答ありがとうございます。SetMenuInfo API関数を少し調べてみます。
編集 削除