2017-02-20 5 views

答えて

0

未所有のトップレベルウィンドウがタスクバーに表示されるには、スタイルが必要です。

Extended Window Stylesドキュメントには、「ツールウィンドウがタスクバーに表示されません」というメッセージが具体的に記載されています。 "より詳細に

MSDNさらに文書この:

The Taskbar

アプリケーションが所有していないウィンドウでを作成するたびに、シェルは、タスクバー上のボタンを配置し、親を持っていない窓には、適切な拡張スタイルビット(下記のManaging Taskbar Buttonsを参照)があります。アプリケーションが所有していないウィンドウを作成するたびに

...

の管理タスクバーボタン

シェルは、タスクバーのボタンを作成します。 ウィンドウボタンがタスクバーに配置されていることを確認するには、WS_EX_APPWINDOW拡張スタイルの未所有ウィンドウを作成します。ウィンドウボタンがタスクバーに配置されないようにするには、WS_EX_TOOLWINDOW拡張スタイルの未所有ウィンドウを作成します。代わりに、非表示のウィンドウを作成し、この非表示のウィンドウを表示可能なウィンドウの所有者にすることができます。

シェルは、ウィンドウのスタイルが表示されているタスクバーボタンをサポートしている場合にのみ、ウィンドウのボタンをタスクバーから削除します。ウィンドウのスタイルを表示可能なタスクバーボタンをサポートしていないスタイルに動的に変更する場合は、最初にウィンドウを非表示にして(SW_HIDEShowWindowを呼び出して)、ウィンドウスタイルを変更してからウィンドウを表示する必要があります。

...のShell32.dllのタスクバー

Version 4.71 and laterの内容を変更する

は、タスクバーの内容を変更する機能を追加します。 アプリケーションから、タスクバーボタンを追加、削除、有効化できるようになりました。アイテムをアクティブにしてもウィンドウはアクティブになりません。タスクバーに押されたアイテムが表示されます。

タスクバーの変更機能は、ITaskbarListインターフェイス(IID_ITaskbarList)を公開するコンポーネントオブジェクトモデル(COM)オブジェクト(CLSID_TaskbarList)で実装されています。オブジェクトを初期化するには、ITaskbarList::HrInitメソッドを呼び出す必要があります。その後、ITaskbarListインターフェイスのメソッドを使用して、タスクバーの内容を変更することができます。

だから、あなたはあなたのツールウィンドウのためのITaskbarList::AddTab()を使用することができるかもしれない:

ウィンドウの任意のタイプは、タスクバーに追加することができますが、窓は、少なくとも持っていることをお勧めしますWS_CAPTIONスタイル。

+0

これで、WS_EX_TOOLWINDOWスタイルを使用する方法がありますが、WS_EX_APPWINDOWを使用してボタンを表示する方法はありますか? – Dementor

+0

@Dementor 2つのスタイルを混在させることはできません。しかし、あなたは 'ITaskbarList :: AddTab()'を使って試してみるかもしれません。私は自分の答えを更新しました。 –

関連する問題