タスクトレイにのみアイコンを表示し、タスクバーにタスクスイッチを表示させないアプリケーションをつくる場合は、2通りの方法があります。
@ メインウィンドウを非表示状態にする。メインウィンドウを表示しないアプリケーションを作成する場合、有効。
A アプリケーションの属性をはずし、ツールウィンドウの属性を付加する。
@の場合は、CWndのShowWindowメソッドを使用します。
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// :
// 省略
// :
// 非表示に設定します。
ShowWindow(SW_HIDE);
return TRUE;
}
Aの場合は、GetWindowLong関数とSetWindowLong関数を使用し、ウィンドウスタイルを変更します。
// タスクバーからスイッチを除去する関数を
// このように作成するとよいでしょう。
void ConcealsTaskSwitch(HWND hWnd)
{
// 拡張ウィンドウスタイルを取得
LONG lStyle = ::GetWindowLong(hWnd, GWL_EXSTYLE);
// メインウィンドウの属性を除去
lStyle ^= WS_EX_APPWINDOW;
// ツールウィンドウの属性を追加
lStyle |= WS_EX_TOOLWINDOW;
// 拡張ウィンドウスタイルを設定
::SetWindowLong(hWnd, GWL_EXSTYLE, lStyle);
}
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// :
// 省略
// :
// 上記に作成してある関数を呼びます。
ConcealsTaskSwitch(m_hWnd);
return TRUE;
}
|