タスクバーに表示しないようにする方法

このQ&Aのポイント
  • Windows APIでタスクバーに表示されないウィンドウを作成する方法について教えてください。
  • CreateWindowEx関数のWS_EX_TOOLWINDOWを使用すると、タスクバーに表示されずにウィンドウを作成することが可能です。しかし、この方法ではタイトルバーが貧弱になってしまいます。
  • C++Builderを使用して新しいTFormでウィンドウを作成すると、タスクバーに表示されずにちゃんとしたタイトルバーが付いたウィンドウを作成することができます。C++Builderではどのようにしてこれを実現しているのでしょうか?
回答を見る
  • ベストアンサー

タスクバーに表示しないようにするには?

Windows API で教えていただきたい事があります。 メインの Window からメニューでいろいろな情報を表示する Window を子ウィンドーではなく独立したウィンドーとして作るようにしているのですが、たくさん作るとその度にタスクバーの表示が増えるのでうるさいので、メインのウィンドー以外はタスクバーに出ないようにしたいのです。 CreateWindowEx で WS_EX_TOOLWINDOW をつかうとタスクバーの表示はでないのですが、タイトルバーが貧弱になってしまいます。無理なのなら簡単にあきらめられるのですが、ボーランドのC++Builderを使って新しいTFormでウィンドーを作るとちゃんとしたタイトルバーでタスクバーは増えません。C++Builderはどうやってこういうことをやっているのでしょうか?

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

  • ベストアンサー
  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

ダイアログを新たに作って、クラスを割り当て それをDoModalなどで表示すればタスクバーは出ないと思います。 BuilderのTFormってVCで言う「ダイアログベース」よね

moritan2
質問者

お礼

なるほど、ダイアログとして処理するのがいいようですね。ただし、ステータス情報は常時表示しておきたかったので、DoModal ではなく、CreateDialogでモードレスダイアログを作って目的を達成できました。C++ Builder の TForm ってモードレスダイアログだったんですね。知りませんでした。

関連するQ&A

  • タスクバーに非表示

    SDKではCreateWindowEXを使えば WS_EX_TOOLWINDOWを指定することでタスクバー上に非表示にすることができましたが、 MFCで BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)で cs.dwExStyle |= WS_EX_TOOLWINDOWとしたところ、 最大化、最小化ボタンが消えてしまいます。 最大化最小化ボタンをつけて、かつタスクバーに表示させたくないのですが どうすれば良いでしょうか?

  • ウィンドウのサイズ変更について

    タイトルバーがないウィンドウのサイズ変更について質問です。 タイトルバーがあるウィンドウでは、 ウィンドウの端にマウスカーソルを合わせると サイズ変更のカーソルに変わってサイズ変更が出来ますけど、 タイトルバーがないウィンドウでは出来ないのですが、 どうすればサイズ変更が出来るようになるのでしょうか? CreateWindowEx()には、 拡張ウィンドウスタイルには、 WS_EX_TOOLWINDOW | WS_EX_LAYERED | WS_EX_ACCEPTFILES ウィンドウスタイルには、 WS_POPUPWINDOW | WS_BORDER を渡しています。 開発環境 XP Visual Studio 2005 C、C++

  • ウインドウスタイルの、WS_EX_TOPMOST

    引き続きVC++2008でWindowsフォームアプリケーションを作っています。 WindowsAPIでのウインドウ製作中です。 今Form1を親とするウインドウで、CreateWindowEx内のウインドウスタイルの個所の引数にWS_EX_TOPMOSTを指定したのですが どうも最前面に表示されてくれないようです。 これは何か他にやらないといけない事があるのでしょうか? なお、CreateWindowEx関数は現在、最初の引数を WS_EX_TOOLWINDOW にして、WS_EX_TOPMOST以外のウインドウスタイルは WS_SYSMENU | WS_VSCROLL | WS_SIZEBOX がある状態です。

  • WindowsAPIの、ウインドウの表示非表示

    WindowsAPIのCreateWindowEx関数で作った 例えば第一引数が WS_EX_TOOLWINDOW|WS_EX_TOPMOST で第四引数が WS_SYSMENU | WS_VSCROLL | WS_SIZEBOX のウインドウを、何かのアクションがあったときいったん非表示にしてから、また何かのアクションがあった時に表示させるには、どのような物を使うのがベストなのでしょうか? プロシージャ内(HWNDはhw)で一例として(…?)試しに以下だけのものでやってみると long lStyle = GetWindowLong(hw, GWL_STYLE); lStyle = ~WS_VISIBLE; SetWindowLong(hw, GWL_STYLE, lStyle); 確かに非表示扱いにはなるようなのですが、これだけではスクリーンは再描画されず、再描画されるには人為的に別ウインドウを移動したりしないといけません。 おそらく「何かによって再描画させられれば」出来ると思うのですが それはどうすれば実現できるのでしょうか? また、これより もっと「こっちの方がいい」といった方法はありますでしょうか?

  • CreateWindowEx のウィンドウスタイルが反映されないのですが・・・

    CreateWindowEx のウィンドウスタイルが反映されないのですが・・・ VC++6.0 の SDK にて、ウィンドウを表示するプログラムを作成中なのですが、 スタイルが思うように反映されません。なぜなのでしょうか。 hList = CreateWindowEx( 0,      WC_LISTVIEW, "",       WS_CHILD | WS_VISIBLE |//猫でもわかる ~ によるうとデフォルトで必要らしい      WS_EX_CLIENTEDGE |   // 縁が沈んで見える境界線を持ちます。→ 持ちません      WS_EX_ACCEPTFILES |  // ドラッグ&ドロップを受けるとあるが、テキストをドロップしても×マーク      WS_EX_RIGHTSCROLLBAR | // 右スクロールバーが出るはずなのに・・・      LVS_REPORT,       // カラムのタイトル      0, 0, 0, 0,      hWnd,      (HMENU)LISTVW_HI_1,      hInst,      NULL);

  • タスクバーをアイコンのみで表示させる

    XPを使っています。 XPのタスクバーでは起動しているソフトのアイコンとタイトルバーの内容が表示されていますが、これをWindows7のようにアイコンのみで表示する方法があったら教えてください。 常駐ソフトはなるべく使わないようにしたいので、できればレジストリの変更などの方法にしたいです。 よろしくおねがいします。

  • タスクバーに2つ表示される。

    Windows C#で開発しております。 作ったアプリは、 最初にAというフォームを開き、A⇔B⇔C という画面遷移をします。 最初にAを表示したときは、タスクバーに1つ表示されますが、 Cを開いてBに戻ったら、タスクバーに2つ表示されてしまいます。 (添付参照) タスクバーには常に1つ表示されるようにしたいのですが、 どうすればよいでしょうか? つたない説明で恐縮ですが、どなたかご教授お願い致します。

  • トップレベルのEDITのスタイル

    実行するとEDITが出てきて入力させるだけなのですが hWnd=CreateWindowEx( WS_EX_TOPMOST, "EDIT",NULL, WS_POPUP, point.x,point,y,300,20,NULL,NULL,hInstance,0); として親無しのEDITを作成しています 移動もサイズ変更も必要無いのですが 背景に溶け込まないように枠だけはほしいと思い WS_BORDERを付けるなどすると タイトルバーが出てきてしまいます タイトルバー無しの枠付きには出来ないのでしょうか

  • タスクバー等の表示が消えてしまいました

    インターネットで検索している間に、気がついたら画面下に有りますスタートボタンやタスクバーなど、 それと画面の上部に有りますタイトルバー、メニューバー等が表示されなくなってしまいました。 それで×の閉じるボタンもなくなり閉じることができません。 なにか変な操作をしてしまったのでしょうか? どのようにしたら、元に戻せるのでしょうか? Internet Explorer Google Windows Vista HomePremium SP1 です

  • Windows8でタスクバーを常に表示させたい

    window8 を最近使い始めた者です。 以前は、windoesXPを使用していました。 インターネットを使用している最中に、タスクバーが消えてしまい困っています。 ネットで調べてみると、タスクバー上で右クリック→プロパティ で 「タスクバーをほかのウィンドウの手前に表示する」 にチェックを入れてください、と回答があるのですが、「タスクバーをほかのウィンドウの手前に表示する」の項目自体がありません。 どのようにすれば、windows8でタスクバーが常に表示されるようになるかお教え頂けますでしょうか? 使用しているPCのメーカーは、acerです。