- ベストアンサー
VC++ 7.1 で メインウィンドウを非表示に
VC++ 7.1 で メインウィンドウを非表示に したいのですが、探し方が悪いのか ShowWindowが見つかりません どのようにして 非表示にしたらいいのでしょうか? よろしくお願いいたします
- みんなの回答 (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してる程度なので間違っていたらすみません。
その他の回答 (2)
- fo-o
- ベストアンサー率50% (4/8)
MFCアプリケーション作成のプロジェクトでウィザードをつかったなら 作成したアプリケーションクラスのソースファイル中のInitInstance関数内 で m_pMainWnd->ShowWindow(SW_SHOW); があると思います。SW_SHOWをSW_HIDE にしたら消えます。
お礼
なんども申し訳ございません これの事だと思うのですが 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);が見つかりません すべてのファイルを検索したのですがこれしかないです。 なんども申し訳ございませんがよろしくお願い致します。
補足
BOOL CWinApp::InitInstance() { InitLibId(); m_hLangResourceDLL = LoadAppLangResourceDLL(); if(m_hLangResourceDLL != NULL) { AfxSetResourceHandle(m_hLangResourceDLL); _AtlBaseModule.SetResourceInstance(m_hLangResourceDLL); } return TRUE; } こちらの方もクラスビューから調べて見たのですが やはりありません よろしくお願いいたします
- pick52
- ベストアンサー率35% (166/466)
ShowWindow()はWindowsAPIですが・・・。
お礼
MFC ライブラリ リファレンスに CWnd::ShowWindow と書いてあるのですが これでウィンドウの表示設定を してるのではないのでしょうか? どの部分でメインウインドウの表示の設定をしているのでしょうか? すいませんがよろしくお願い致します。
お礼
ありがとうございます 始めから消すのではなく アクティブになったときに消すようにします。 BCBでは始めから消して作ったような気がしましたので 探していたのですが(^^; MFCを覚える練習に タスクトレイに常駐するものを作りたかったのです。 今までBCBやC#を使ってMFCから逃げていたのですが もうそろそろと思いまして。。 ありがとうございました。