[環境]
・Visual Basic 6.0
・WindowsXP
[現象]
・プログラムを実行し、画面が起動した場合にタスクバーに
アイコン(ボタン?)が表示されない。
※現在実行中のアプリケーションがボタンとして表示される場所です。
[現状]
・プロパティの"ShowInTaskBar"の値は"TRUE"です。
・画面は「MainForm.Show vbModal」として起動しています。
・"vbModal"としているのは、その後の処理は画面の値によって
処理したいためですが、どうやらこの部分が悪いのかと。
・"vbModal"を外すとタスクバーにアイコンは表示されます。
"vbModal"とした場合でもタスクバーにアイコンを表示させる方法、
また、やり方は別として、"vbModal"とした場合にタスクバーに
アイコンを表示させる事ができる、できないといった事でもいいです。
ご存知の方がいらしたら、返信をお願い致します。
Showする前に、Me.Hideとかしてませんか?
Modalの影響だと思いますので、Modalの様に振舞う機能を取り入れてみてはどうでしょう?
例えば…
'Module1
Sub main()
Debug.Print "Call EmulateModal"
Call Form1.EmulateModal
Debug.Print "Exit EmulateModal"
End Sub
'Form1
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private closedFlag As Boolean
Public Sub EmulateModal(Optional ByVal Parent As Form = Nothing)
closedFlag = False
Me.Show vbModeless, Parent
Do
DoEvents
Sleep 1
Loop Until closedFlag
End Sub
Private Sub Form_Unload(Cancel As Integer)
closedFlag = True
End Sub
※画面外にウィンドウを作って、それの子として表示してもいいかもしれません。
> ※現在実行中のアプリケーションがボタンとして表示される場所です。
ちょっとこの辺が分からなかったので誤爆してるかも・・・
または、
Sub Main()でShowしてるとか?
返信ありがとうございます。
>コボル殿
言葉足らずで申し訳ありません。
※はタスクバーの説明です。
Sub Main()から呼ばれる関数内にてShowをしています。
Sub Main()から呼び出すとタスクバーには表示されないのでしょうか?
>ガッ殿
表記されている方法で記述し、試験を行なってみます。
> ・"vbModal"を外すとタスクバーにアイコンは表示されます。
そういう仕様です。
> "vbModal"とした場合でもタスクバーにアイコンを表示させる方法、
そもそもモーダルにしない方向で考えた方が良いかもしれませんが、
どうしても vbModal で無ければいけないのであれば、
ITaskbarListインターフェイスの AddTab メソッドに、
表示させたいフォームの hWnd を渡せば OK です。
>ガッ殿
教えて頂いた方法にて試したところ、正常に動作されました。
ただ、場合によっては無限ループにならないか?というところに
多少の不安を感じますが、アドバイスありがとうございます。
>魔界の仮面弁士殿
私のレベルではITaskbarListインターフェイスは理解までに時間がかかり、
あつかえそうにありません。せっかくのアドバイスを無駄にしてしまい
申し訳ございません。
以上で"解決"とさせて頂きたいと思います。
ありがとうございました。
ツイート | ![]() |