dポイントプレゼントキャンペーン実施中!

Microsoft Visual C++ 6.0を新規で開いて、「挿入」-「リソース」のリソースの挿入画面で、2つダイアログ(Dialog)を作りました。新規作成で作りましたので「Script1 – IDD_DIALOG1(Dialog)」「Script1 – IDD_DIALOG2(Dialog)」と2ウィンドウのタイトルバーに書かれてあります。さて、これらを保存しようとした時にプロジェクト名を決めないといけないみたいで、適当にtestと名づけました。プロジェクトを作成すると、「test.dsw」というプロジェクトワークスペースが出来ました。ここで、「Debug」というフォルダが作成されましたので、このフォルダ内にEXEファイルを作成して、EXEを実行して2つのウィンドウを上手く機能も付けてアプリケーションを作ろうと思っているのですが、コンパイルすると

プロジェクト 'test - Win32 Debug' 用の中間ファイルおよび出力ファイルを削除しています。
--------------------構成: test - Win32 Debug--------------------
リソースをコンパイル中...
リンク中...
LINK:error LNK2001:外部シンボル "_WinMainCRTStartup" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

と、ドッキングビューに表示されています。
どのようにしたら、EXEを作成できて実行できるか、対策案をお願いいたします。

A 回答 (2件)

現在のダイアログのレイアウトはプロジェクト内の○○.rcというファイルに格納されています。


こちらはとりあえず保留。

新規のダイアログexeを作成する手順:
VC++起動。
[ファイル]-[新規作成]
「新規作成」ダイアログ
「プロジェクト」タブ
「MFC AppWizard(exe)」青いアイコンクリック、プロジェクト名(exe名)を決めてOK。
「MFC AppWizard - ステップ1」ダイアログで「ダイアログベース」を選択、そのまま終了。

F5(実行)でexeが作成され、ダイアログが表示される事を確認。


ダイアログをインポートする手順:
[ファイル]-[開く]で古いrcファイルを開く。
プロジェクトの左側ResourceViewのDialogに古いDialogからIDD_…をctrlを押しながらドラッグ&ドロップ。


ダイアログクラスを作る手順:
ダイアログを開き、ctrl+wでクラスウィザード起動。
適当にクラス名前を付けてOK。


exeの最初に表示するダイアログを差し替える手順:
左側ClassViewで、C○○AppのInitInstanceを開く。

C○○Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();

がダイアログの表示処理なので、C○○Dlg→C<新規に作ったクラス名>Dlgと変更。
先頭行に#include "<新規に作ったクラスのファイル名>.h"を追加。


ボタンのハンドラを作る手順:
リソースエディタでダイアログのボタンをダブルクリック、関数名を決める。


ダイアログ2を表示する手順:
上で作った関数に、
C<ダイアログ2のクラス名>Dlg dlg;
dlg.DoModal();
の処理を追加。
#includeも追加。

で良いハズ。
    • good
    • 0

> EXEを実行して2つのウィンドウを上手く機能も付けてアプリケーションを作ろうと思っているのですが、



どのように機能をつけたいのか、具体的な説明が無いので、詳細な手順は書けません。
exeをクリックするとダイアログ1が表示されて、ダイアログ1のボタンを押すとダイアログ2が表示される。OKキャンセルで閉じるとか。

状況からして、新規にAppWizardでダイアログベースのプロジェクトを作成、そちらに現在のダイアログをコピーするのが早そうです。

この回答への補足

説明不足で申し訳ございません。
neKo_deuxさんのおっしゃるとおり、exeをクリックするとダイアログ1が表示されて、ダイアログ1のボタンを押すとダイアログ2が表示される。OKキャンセルで閉じるとか。など、簡単なダイアログでよいのです。あとあとは詳かな機能を付けたいので、ソースコードを入力していくつもりですが、今はただ2つのダイアログを作って、それだけでEXEを作成して実行してみたいだけだったのです。

あと、neKo_deuxさんの「状況からして、新規にAppWizardでダイアログベースのプロジェクトを作成、そちらに現在のダイアログをコピーするのが早そうです。」という作業も考慮したいので、手順を教えていただけたらありがたいです。よろしくお願いします。

補足日時:2004/07/23 14:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!