2011-08-12 22 views
4

デスクトップ全体をカバーするキャプションのないウィンドウを作っていますが、タスクバーは表示します。これを行う最善の方法は何ですか?フルスクリーンでもタスクバーを表示する方法

私はタスクバーがどこにあるかを検出し、それを除外するために私のウィンドウのサイズを変更するだけですが、その後、ユーザーがいつタスクバーのサイズ/位置を変更するかを知る必要があります。

または、ウィンドウスタイルの組み合わせなど、ウィンドウが常にタスクバーの後ろにあることを確認するものがありますか?

+1

ウィンドウを最大化することができない理由はありますか? – Justin

+0

WM_GETMINMAXINFOに応答して、ウィンドウのキャプションと境界線がモニタ領域外に正しく表示され、タスクバーで重なるように位置を慎重に計算します。これは、複数のモニターでうまくいくという一般的なケースはありません。同じサイズを持つ必要はなく、そのうちの1つだけがタスクバーを表示します。 –

+0

Windowsは自動的にキャプション付きのウィンドウの後ろにタスクバーを置きます(現時点では正確な基準はわかりませんが、WS_OVERLAPPEDWINDOW)。最大ウィンドウサイズがあるので、キャプション付きのウィンドウを作成することはできず、キャプション/ボーダーが表示されないようにオフセットするだけです。私の現在の考えは、WS_OVERLAPPEDWINDOWに進むことですが、キャプション/ etcが存在しないようにWM_NCCALCSIZEを処理します。今しよう。 – tenfour

答えて

3

SystemParametersInfoの戻り値を使用してウィンドウの配置を設定し、SPI_GETWORKAREAをパラメータとして渡します。

プライマリディスプレイモニタ上の作業領域のサイズを取得します。 作業領域は、システム タスクバーまたはアプリケーションのデスクトップツールバーによって隠されていない画面の部分です。 pvParamパラメータは、 は、仮想画面座標で表現された作業領域 領域の座標を受け取るRECT構造体を指している必要があります。

3

キャプション/ボーダーのないウィンドウを最大化します。

+0

+1これはとても簡単で、必要なことを正確に実行します。 –

+0

残念ながら、デスクトップ全体ではなく、1台のモニターしかカバーできません。それがうまくいく - エレガントなアイディアを望みます。 – tenfour

+1

境界線とキャプションを再作成せずにウィンドウから削除することはできません。まあ、それはマイナーではありません。 –