- ベストアンサー
アプリを開いた状態にする方法
いつもお世話になります。 VC++でプロジェクト、「MFCアプリケーション」で Windowダイアログで用いてプログラムを書きましたが、 実行ファイル(.exe)を起動すると ウィンドウが閉じた状態になります(ディスクトップ画面に表示されず閉じて状態ではあるが、起動している状態)。 実行ファイル(.exe)を起動し、ウィンドウを開いた状態にする設定などはあるのでしょうか? ちなみに、閉じた状態で選択するとアプリは開きますが、あくまで、起動して開いた状態にしたいです。 どうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ダイアログベースですか。 自分で派生したダイアログクラス CSampleDlg の OnInitDialog で何かやっていませんか? 最悪、 m_pMainWnd = &dlg; m_pMainWnd->ShowWindow(SW_SHOW); //←追加 INT_PTR nResponse = dlg.DoModal(); で無理やり表示できるとは思いますが、 プログラムのどこかに m_pMainWnd = pMainFrame; // Show the main window using the nCmdShow parameter // passed to the application when it was first launched. pMainFrame->ShowWindow(m_nCmdShow); pMainFrame->UpdateWindow(); な感じの部分があって、そこでの メンバー変数 m_nCmdShowが 変な値になっているような気がします。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
タスクバーにはあるけれどもウィンドウが開いてない状態 ということでいいですか? CWinAppから継承して自分のアプリケーションクラスを 定義していると思いますが、そのクラスのメンバー関数 InitInstance はどう定義されていますか?
お礼
すみません。InitInstance()ありました。 BOOL CSampleApp::InitInstance() { InitCommonControls(); CWinApp::InitInstance(); if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); SetRegistryKey(_T("アプリケーション ウィザードで生成されたローカル アプリケーション")); CSampleDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } return FALSE; } でも、この関数はまったくいじっていません。 よろしくお願い致します。
補足
回答ありがとうございます。 そうです。実行ファイルを起動すると、 タスクバーにはあるけど、閉じた状態になっています。 いちいち、ウィンドウを開かないといけない状態です。 CWinAppクラスとInitInstance はありません。 ダイアログベースで作成しており、 ボタンを追加し、そのボタンクリックイベント関数ないに 処理を加えたアプリです。
お礼
回答ありがとうございます。 OnInitDialog()内で ShowWindow(SW_MINIMIZE); となっていました。 コメントアウトで正常に開くウィンドウになりました。 本当にありがとうございました。