生成されたウィンドウが以下の3つの条件を満たす場合、ウィンドウはタスクバーへ登録されます。
タスクバーに表示されないウィンドウを作る方法には少なくとも以下の3つがあると言えます。
不可視なウィンドウを作成する
不可視なウィンドウはタスクバーに登録されません。 スタイル WS_EX_TOOLWINDOW を指定する
ウィンドウの拡張スタイルにスタイル WS_EX_TOOLWINDOW を指定してウィンドウを生成することで、タスクバーに登録されない可視ウィンドウを作成することが出来ます。
他のウィンドウに所有させる
まず初めに可視ウィンドウのオーナーとなる不可視ウィンドウを作成します。 // 不可視ウィンドウのウィンドウクラスを登録する WNDCLASSEX wcHide; // 不可視ウィンドウのウィンドウクラス memset( &wcHide, 0, sizeof( wcHide ) ); wcHide.cbSize = sizeof( wcHide ); …… 省略 …… // 可視ウィンドウのオーナーになる不可視ウィンドウを作成する HWND hwndHide = CreateWindow ( wcHide.lpszClassName, // クラス名 "", // ウィンドウ名 style & ~WS_VISIBLE, // [!! 重要 !!] スタイルには WS_VISIBLE を指定しないこと CW_USEDEFAULT, // x 座標 CW_USEDEFAULT, // y 座標 CW_USEDEFAULT, // 幅 CW_USEDEFAULT, // 高さ HWND_DESKTOP, // オーナーウィンドウ NULL, // メニューハンドル wcHide.hInstance, // ウィンドウに関連付けられたモジュールのインスタンス 0 // ウィンドウ作成データ ); // 可視ウィンドウのウィンドウクラスを登録する WNDCLASSEX wc; // 可視ウィンドウのウィンドウクラス memset( &wc, 0, sizeof( wc ) ); wc.cbSize = sizeof( wc ); …… 省略 …… // タスクバーに登録されない可視ウィンドウを作成する HWND hwnd = CreateWindow ( wc.lpszClassName, // クラス名 "", // ウィンドウ名 WS_VISIBLE, // [!! 重要 !!] こちらはスタイルに WS_VISIBLE を指定してもよい CW_USEDEFAULT, // x 座標 CW_USEDEFAULT, // y 座標 CW_USEDEFAULT, // 幅 CW_USEDEFAULT, // 高さ hwndHide, // [!! 重要 !!] 不可視ウィンドウをオーナーに指定する NULL, // メニューハンドル wc.hInstance, // ウィンドウに関連付けられたモジュールのインスタンス 0 // ウィンドウ作成データ ); 関連 |
|