• ベストアンサー

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

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

  • gotyan
  • お礼率91% (172/188)

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

  • ベストアンサー
  • 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 と書いてあるのですが これでウィンドウの表示設定を してるのではないのでしょうか? どの部分でメインウインドウの表示の設定をしているのでしょうか? すいませんがよろしくお願い致します。

関連するQ&A

  • 非表示のメインウィンドウを表示させるには?

    環境 WIN98 VC++6.0 MFC SDIにて タスクトレイに常駐するアプリにおいて 1.起動時にメインウィンドウを非表示にしています。 2.起動時と同時にダイアログを表示しています。 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 略 dlg = new CInput(this); dlg->Create(IDD_DIALOG1); dlg->ShowWindow(SW_SHOW); return 0; } 3.このような場合に、ダイアログのボタン押し下げにて、メインウィンドウを表示させるには、どうすれば良いでしょうか? 以下のようにしてみましたが、不正な処理で落ちてしまいます。 void CInput::OnButton1() { CWnd* mywnd = (CWnd*)GetParent(); mywnd->ShowWindow(SW_SHOW); }

  • ウィンドウ非表示のちらつきを無くすには

    <環境> WIN98 VC++6.0 MFC SDIにて 起動時に下記にてウィンドウを非表示にしていますが、最初に一瞬表示されてから、消えます。 何事も無かったかのように、こっそりと非表示にするにはどうすればよいですか? BOOL CAbcApp::InitInstance() { 省略 //m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->ShowWindow(SW_HIDE); m_pMainWnd->UpdateWindow(); return TRUE; }

  • ウインドウの最前面表示

    指定された日時になると、メッセージウインドウを表示するソフトを作成中ですが、そのウインドウのOnInitDialog()でShowWindow(SW_SHOW)をコールしても、その時に起動しているアプリケーションによっては、最前面に表示されません。(エクスプローラやIEの前面には表示されるが、VC++では背面に表示されます。) アプリケーションによっては無理なのでしょうか? (警告ウインドウとしても使用したいので、最前面に表示したいのですが...。) 環境  WindowsXP  Visual C++6.0

  • 起動時のメインウィンドウのアクティブ化

    お世話になっております。 VC2005を使用しております。 モードレスダイアログ(ポップアップ)を起動時から表示させて処理を行っております。 起動時に、モードレスダイアログがアクティブになってしまい、メインウィンドウがアクティブになりません(枠の色が薄い) どのようにすれば、メインウィンドウがアクティブで起動するのでしょうか? 教えてください。 よろしくお願いします。

  • VC6 コントロールウインドウの表示

    こんにちは、honiyonです。  VC6を使用しています。  ダイアログを作成中に誤って ボタンやスタティックテキスト等コントロールのリストが表示されているコントロールウインドウを閉じてしまいました。  メニュー等を探しても、再び表示する為の操作が見つからず困っています。  初歩的な質問でお恥ずかしいですが、表示させる方法を教えてください。  宜しくお願いします(..

  • メインフォームのSW_MINIMIZE

    MDIで作成したメインフォームの操作画面があるのですが、簡易操作画面が必要となり、選択からどちらかの画面を表示するようにしたのですが、メインフォームも裏で動作している必要が生じたので簡易画面を表示する場合は、メインフォームを以下のようにし、  CWnd *pWnd = AfxGetMainWnd();  ::ShowWindow(pWnd->m_hWnd, SW_MINIMIZE); 簡易画面から選択画面へ戻る際は以下のようにしました。  ShowWindow(SW_RESTORE); が、簡易画面を2回表示した後、選択画面へ戻ろうとすると必ず以下のエラーが発生します。 >問題が発生したため、*****.exe を終了します。 ご不便をおかけして申し訳ありません。 情報が少なくて申し訳ありませんが、エラーを回避するための助言を頂ければ幸いです。 開発環境 OS:WindowsXp 言語:VC++6.0(MFC) よろしくお願いします。

  • VC++ タブコントロールについて

    以下の環境にてタブコントロールを実装しようとしています。 ・VisualStudio2008 VC++ ・ネイティブ(.NET未使用) ・ダイアログベース、スタティックライブラリ タブを表示させるメインダイアログと他に、子ダイアログ3つを用意して タブが押されたときに表示をON/OFF(ShowWindow使用)させるものを作ったのですが、 以下の問題が出ています。 うまい対策または、タブコントロールの文献で参考になるサイトを教えてください。 [現象と質問] ・メインダイアログを移動させると子ダイアログが追従しない。  → OnPaint()にてOnTcnSelchangeSelectTab()を呼ぶようにしたら追従しましたが、    すばやくダイアログを動かすと、子ダイアログが遅れてついてくるように見えてしまいます。    子ダイアログを追従させるうまい方法(本来のやりかた)はどうすればよいでしょうか。 ・子ダイアログをクリックすると、メインダイアログのタイトルが薄くなる(裏に隠れるような感じ)。  → メインダイアログと子ダイアログのプロパティの組み合わせでなんとかなると思っていますが、    どのようにしたらいいのか、てこずっています。    アドバイスをいただけたらと思います。

  • メインウィンドウでのステータスバーの表示・非表示

    こんにちは。 質問が有るのですが、サブウィンドウを開く際にステータスバーの表示・非表示はできるのですが、メインウィンドウのステータスバーの表示・非表示の設定はできるのでしょうか。 どなたかご教授の方よろしくおねがいいたします。 環境はMac OS X,ブラウザはsafari1.0です。

  • VC++2010 MFC サイズの最大化について

    VC++2010 MFCで作成しているんですが、 ShowWindow(SW_MAXIMIZE)を使用し最大化で表示出来たんですが、上のメニューの所を ダブルクリックすると元のサイズに戻ってしまうんですが、どのようにすれば元のサイズに戻らず サイズも変更されずに最大化のまま表示できますか? よろしくお願いします。

  • aviutlのメインウィンドウが表示されない

    この画像ファイルのとおり、右の再生ウィンドウは表示されているのに、真ん中にあるメインウィンドウには拡張編集に使った映像の静止画像もしくは合成された画像が表示されるはずが、なんと表示がなされていないんですと。 でも、「ファイル」から「開く」で動画ファイルを開くと、その開いたファイルはちゃんと表示されるんです。 その状態で拡張編集ウィンドウから画像を開いた上でその画像のある場所以外の場所をクリックすると、ちゃんと表示されるんです。でも、その画像をクリックすると、その画像が消えるんですよ…。 でも、その画像をクリックすると一瞬だけその画像が表示されるのですよ。 一体どうなってるのか、よく分かっていません。懸命にいろんな質問を参考にやってみたものの、それでも全然解決していません。 なので、説明不足でしょうが、どうかご回答をしていただければ、こちらとしてはうれしいです。 それでは、よろしくお願いいたします…。

専門家に質問してみよう