• ベストアンサー

VC++ 7.1 で メインウィンドウを非表示に

VC++ 7.1 で メインウィンドウを非表示に したいのですが、探し方が悪いのか ShowWindowが見つかりません どのようにして 非表示にしたらいいのでしょうか? よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • fo-o
  • ベストアンサー率50% (4/8)
回答No.3

シングルドキュメント(SDI)やマルチドキュメント(MDI)でなくダイアログベースのアプリなんですね。私の回答はSDIのほうでした。 プロジェクトのソースの中ではDoModalしか呼んでないみたいですね。で、調べてみたら、DoModalからRunModalLoopを呼んでいてその中でShowWindowを呼んでるみたいです。 gotyanさんがどういうタイミングや状況で非表示にしたいのかわかりませんが、ダイアログクラスもCWndクラスの派生クラスなので、例えばメインのダイアログにボタンを追加してそのコールバック関数に this->ShowWindow(SW_HIDE); this->UpdateWindow(); Sleep(5000); this->ShowWindow(SW_SHOW); this->UpdateWindow(); を書いたらボタンを押してから5秒間非表示にはなります。これでgotyanさんが満足するかどうかはわかりませんけど。(^^;;; 趣味でPGしてる程度なので間違っていたらすみません。

gotyan
質問者

お礼

ありがとうございます 始めから消すのではなく アクティブになったときに消すようにします。 BCBでは始めから消して作ったような気がしましたので 探していたのですが(^^; MFCを覚える練習に タスクトレイに常駐するものを作りたかったのです。 今までBCBやC#を使ってMFCから逃げていたのですが もうそろそろと思いまして。。 ありがとうございました。

その他の回答 (2)

  • fo-o
  • ベストアンサー率50% (4/8)
回答No.2

MFCアプリケーション作成のプロジェクトでウィザードをつかったなら 作成したアプリケーションクラスのソースファイル中のInitInstance関数内 で m_pMainWnd->ShowWindow(SW_SHOW); があると思います。SW_SHOWをSW_HIDE にしたら消えます。

gotyan
質問者

お礼

なんども申し訳ございません これの事だと思うのですが BOOL Ctest4App::InitInstance() { InitCommonControls(); CWinApp::InitInstance(); AfxEnableControlContainer(); SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); Ctest4Dlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) {} else if (nResponse == IDCANCEL) {} return FALSE; } m_pMainWnd->ShowWindow(SW_SHOW);が見つかりません すべてのファイルを検索したのですがこれしかないです。 なんども申し訳ございませんがよろしくお願い致します。

gotyan
質問者

補足

BOOL CWinApp::InitInstance() { InitLibId(); m_hLangResourceDLL = LoadAppLangResourceDLL(); if(m_hLangResourceDLL != NULL) { AfxSetResourceHandle(m_hLangResourceDLL); _AtlBaseModule.SetResourceInstance(m_hLangResourceDLL); } return TRUE; } こちらの方もクラスビューから調べて見たのですが やはりありません よろしくお願いいたします

  • pick52
  • ベストアンサー率35% (166/466)
回答No.1

ShowWindow()はWindowsAPIですが・・・。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_showwindow.asp
gotyan
質問者

お礼

MFC ライブラリ リファレンスに CWnd::ShowWindow と書いてあるのですが これでウィンドウの表示設定を してるのではないのでしょうか? どの部分でメインウインドウの表示の設定をしているのでしょうか? すいませんがよろしくお願い致します。