- ベストアンサー
WindowsAPIで
Windowを画面サイズでクリエイトしても最下部がタスクバーによって 隠されてしまいます。 タスクバーよりも手前になるようなWindowを作るには どのようなAPIを使えばいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
CreateWindowEx(WS_EX_TOPMOST|…); が無難ですね。 ちなみに、WM_ACTIVATEAPP メッセージのレスポンスロジックとして if (wParam) SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); else SetWindowPos(hWnd,HWND_BOTTOM,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); でも出来ます。
その他の回答 (1)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・WM_CREATE の部分に次の1行を記述します。 SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, 0, 0, (SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE) ); ↑ これで一応はタスクバーよりも前に表示されますが、でもこの方法だとすべてのウインドウよりも 手前にウインドウが表示されてしまいます。→俗にいう『最前面表示』ですから。 ・タスクバーのプロパティから『タスクバーをほかのウインドウの手前に表示する(T)』という チェックを外せばよい。これで普通にウインドウがタスクバーよりも前に表示します。 最初に紹介した SetWindowPos() 関数を使わなくても表示されます。 ・あとタスクバーのチェックを操作する API かレジストリキーがあったと思いますがお勧めできません。 理由は勝っててタスクバーのプロパティを変更してしまうプログラムは他のユーザさんにとっては 『余計なおせっかい』や迷惑な話ですから。 ・以上。
お礼
ボーランドC++(無償)とWindowsMeでやっていますが 起動時にはタスクバーは全面にあるのですが ウィンドウをクリックしたらその後は全面にでるようになりました。 やや不完全ですが使えます。 ありがとうございました。
お礼
ありがとうございます。 最初だけタスクバーが全面にでることは同じですが それでもできました。
補足
失礼しました。 よく調べてみると最初からタスクバーを覆っているようです。 完全解決です。 ありがとうございました。