こんにちは。いつも参考にさせて頂いてます。
開発環境
VC 2008
ダイアログベース
現在、ウィンドウの最小化ボタンを押すとウィンドウを非表示にし、
タスクトレイに格納(アイコン表示)する所までは出来ております。
しかし、起動時にタスクトレイに格納する方法がわかりません。
色々調べたところ、
http://www.sutosoft.com/oldroom/devdiary/20030308.html
では、ダイアログベースではありませんでした。
http://madia.world.coocan.jp/vc/vc_bbs/200503/200503_05030006.html
を参考にOnInitDialog()内で
ShowWindow(SW_HIDE);
タスクトレイにアイコン表示();
return TRUE;
の様にしたところ、タスクトレイにアイコンは表示されましたが、
ウィンドウが非表示になりませんでした。
ShowWindow(SW_SHOWMAXIMIZED);
タスクトレイにアイコン表示();
return TRUE;
の様にするとタスクトレイにアイコンが表示され、ウィンドウは
最大化になりました。
どのようにすれは、起動時にウィンドウを非表示にする事が
出来るのでしょうか?
ご教授御願い致します。
追記です。
どうやらダイアログベースでは
ShowWindow(SW_HIDE);
でウィンドウを非表示にすることはできないみたいです。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200007/00070036.txt
ここに記載されている方法がベターなのでしょうか?
> どのようにすれは、起動時にウィンドウを非表示にする事が出来るのでしょうか?
WM_WINDOWPOSCHANGING で表示可/不可を制御してやるとか
class dialog {
bool enableShow_; // true=表示状態への変更可、false=不可
dialog() : enableShow_(false) {} // コンストラクタで enableShow_ = false に初期化
}
void dialog::OnWindowPosChanging(WINDOWPOS* lpwndpos) {
CDialog::OnWindowPosChanging(lpwndpos);
if (!enableShow_) {
// 現在、表示状態への変更は許可されていないのでクリア
lpwndpos->flags &= ~SWP_SHOWWINDOW;
}
}
>gakさん
有り難う御座いました。
ご教授頂いた方法で、動作させることができました。