常に最前面表示のタスクバーが一時的に最背面に表示されてしまう – プログラミング – Home

常に最前面表示のタスクバーが一時的に最...
 
通知
すべてクリア

常に最前面表示のタスクバーが一時的に最背面に表示されてしまう


ナナン
 ナナン
(@ナナン)
ゲスト
結合: 15年前
投稿: 1
Topic starter  

XP VS2005 MFCです。

タスクバーが常に最前面設定で且つ、任意のウィンドウ(エクスプローラなど何でも可)の
一部がタスクバーの後ろに隠れている状況とします。

ダイアログを作成し(モーダル/モードレスは問わない)、
同ダイアログを、MoveWindow(0,0,画面全体領域.幅, 画面全体領域.高さ)
などで画面全体に表示した際、タスクバーは常に最前面設定しているにも関わらず、
最背面に表示されるようになり、タスクバーに隠れていたウィンドウについても
表示されるようになってしまいます(状態A)

タスクバーをクリックするなどすると、再描画がかかるのか、
再びタスクバーが最前面に表示されます。

状態Aで::UpdateWindow(<タスクバーハンドル>)としても変化はありません。

また、画面下部にタスクバーがあることを前提とした場合、
ダイアログに対しMoveWindow(0,0,画面全体領域.幅, (面全体領域.高さ -1) )
のように、タスクバーがから若干ダイアログが外れるようにすると、
この現象はおきず、タスクバーの最前面オーダーは保たれたままになります。

なぜこのような現象が起きるのでしょうか?

また、この現象を回避
(ダイアログを画面全体表示にした際にも、タスクバーは常に最前面に表示される)
するにはどのようにすればよいでしょうか?


引用解決済
トピックタグ
銀の皿
 銀の皿
(@銀の皿)
ゲスト
結合: 15年前
投稿: 20
 

もう見ていないかもしれませんが。

おそらくナナンさんが仰る「画面全体領域」は「デスクトップサイズ」の事で
たしか「デスクトップサイズ」にはタスクバーの高さ(場合により幅)が関係無く
自分で計算する必要があったんじゃないかと思います。
一切確認を取っていないのでハズしているかもしれません。

また、該当ウィンドウの「最大化」では仕様を満足する事は出来ないのでしょうか?

ちなみにMFC(だけ?)で、タイトルバーの無いウィンドウを「最大化」した時は
「最大化」で無く「全画面表示」になってしまう様です。
「全画面表示」の際は、まさに画面全てを使用するモードなので
タスクバーが後ろに下がる、自動的に隠れるようにしているタスクバーが出てこない
といった現象は仕様であるとも言えると思います。
勿論VCのバージョンにもよるでしょうが。
上記の話は何一つ確証の無い話なので、世間話とでもしておいてください。

以上です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました