起動時にウィンドウをタスクトレイに格納するには?

解決


2tom  2010-02-15 11:43:23  No: 71395  IP: [192.*.*.*]

こんにちは。いつも参考にさせて頂いてます。
開発環境
  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;
の様にするとタスクトレイにアイコンが表示され、ウィンドウは
最大化になりました。

どのようにすれは、起動時にウィンドウを非表示にする事が
出来るのでしょうか?
ご教授御願い致します。

編集 削除
2tom  2010-02-15 13:51:26  No: 71396  IP: [192.*.*.*]

追記です。

どうやらダイアログベースでは
  ShowWindow(SW_HIDE);
でウィンドウを非表示にすることはできないみたいです。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200007/00070036.txt

ここに記載されている方法がベターなのでしょうか?

編集 削除
gak  2010-02-15 17:33:37  No: 71397  IP: [192.*.*.*]

> どのようにすれは、起動時にウィンドウを非表示にする事が出来るのでしょうか?
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;
    }
}

編集 削除
2tom  2010-02-16 18:45:43  No: 71398  IP: [192.*.*.*]

>gakさん
有り難う御座いました。
ご教授頂いた方法で、動作させることができました。

編集 削除