• 締切済み

WinMain関数が呼ばれません

CTestDialogクラスより、CTest2Dialogクラスのダイアログを、 MDIで呼び出すプログラムを作成したいのですが、 まずフレームウィンドウを作成しようと思い、 CTestDialogクラス内に下記のような雛形を作成しました。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow){ MSG msg; while ( GetMessage( &msg, NULL, 0, 0 ) ){ TranslateMessage( &msg ); DispatchMessage( &msg ); } return msg.wParam; } ビルドしてみると、通るのですが、 中にデバッグポイントを打って実行してみても、 どうやら中に入っていないようです。 WinMain関数が正しく動いていれば、プログラム実行時に 自動で呼び出される認識なのですが。。 何か定義が間違っているのでしょうか? 解決策についてご存知の方おられましたら、 お手数ですがご教授お願い致します。 開発環境はVC++2005です。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

CTestDialogクラスということはMFCで作ってるのですよね MFCではWinMainは呼ばれませんよ MFC使わずにWindows SDKで作る場合に普通のmain( )関数の代わりにWinMain( )関数から作ります。 MFCとSDKではプログラムの作り方がかなり違ってきます。

zigen8513
質問者

お礼

調べた結果自己解決したので質問を締め切らせて頂きます。 ご回答ありがとうございました。

zigen8513
質問者

補足

プロジェクトの種類はMFCアプリケーションです。 調べたところ、MDIで作成したスケルトン内の、 InitInstance関数内で、初期表示されるMDIダイアログを 生成しているようですが、このダイアログを自分で定義した、 CTestDialogダイアログ(IDD_TESTDLG)に変更し初期表示させるには、 どのようにソースコードを変更すれば良いのでしょうか? お手数ですが、ご回答お願い致します。

回答No.1

 こんにちは。  WinMainはエントリポイントなので、この中でウィンドウを作成します。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow){ MSG msg; //此処でウィンドウを作成する while ( GetMessage( &msg, NULL, 0, 0 ) ){ TranslateMessage( &msg ); DispatchMessage( &msg ); } return msg.wParam; }  で、呼ばれないという事は、プロジェクトの種類がWin32アプリケーション以外なのではないでしょうか(但し、普通のmain()からでもWinMainに転送してウィンドウを開く事は出来ます)。

zigen8513
質問者

お礼

調べた結果自己解決したので質問を締め切らせて頂きます。 ご回答ありがとうございました。

zigen8513
質問者

補足

プロジェクトの種類はMFCアプリケーションです。 調べたところ、MDIで作成したスケルトン内の、 InitInstance関数内で、初期表示されるMDIダイアログを 生成しているようですが、このダイアログを自分で定義した、 CTestDialogダイアログ(IDD_TESTDLG)に変更し初期表示させるには、 どのようにソースコードを変更すれば良いのでしょうか? お手数ですが、ご回答お願い致します。

関連するQ&A

専門家に質問してみよう