• ベストアンサー

WindowsAPIで

Windowを画面サイズでクリエイトしても最下部がタスクバーによって 隠されてしまいます。 タスクバーよりも手前になるようなWindowを作るには どのようなAPIを使えばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#50176
noname#50176
回答No.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); でも出来ます。

reiman
質問者

お礼

ありがとうございます。 最初だけタスクバーが全面にでることは同じですが それでもできました。

reiman
質問者

補足

失礼しました。 よく調べてみると最初からタスクバーを覆っているようです。 完全解決です。 ありがとうございました。

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・WM_CREATE の部分に次の1行を記述します。  SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, 0, 0, (SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE) );  ↑  これで一応はタスクバーよりも前に表示されますが、でもこの方法だとすべてのウインドウよりも  手前にウインドウが表示されてしまいます。→俗にいう『最前面表示』ですから。 ・タスクバーのプロパティから『タスクバーをほかのウインドウの手前に表示する(T)』という  チェックを外せばよい。これで普通にウインドウがタスクバーよりも前に表示します。  最初に紹介した SetWindowPos() 関数を使わなくても表示されます。 ・あとタスクバーのチェックを操作する API かレジストリキーがあったと思いますがお勧めできません。  理由は勝っててタスクバーのプロパティを変更してしまうプログラムは他のユーザさんにとっては  『余計なおせっかい』や迷惑な話ですから。 ・以上。

reiman
質問者

お礼

ボーランドC++(無償)とWindowsMeでやっていますが 起動時にはタスクバーは全面にあるのですが ウィンドウをクリックしたらその後は全面にでるようになりました。 やや不完全ですが使えます。 ありがとうございました。

関連するQ&A