2017-09-12 4 views
-1

私は複数の事をしようと試みてきたが、基本はこれに来る:CDialogを作成するには?

#include <stdio.h> 
#include <afxwin.h> 


main(int argc, const char* argv[]) 
{ 

    printf("\nHello World\n\n"); 

    CDialog *dlg = new CDialog(); 
    dlg->DoModal(); 

    while(true)Sleep(1); // Sleep is a windows function 
} 

私はこの取得実行すると:私は、このダイアログのために何をしないのです enter image description here

を?

複数のサイトを検索しましたが、すべて同じエラーメッセージが表示されます。

誰かが私に何が見えないのか教えていただけますか?

+2

ダイアログを表示する場合は、[OK]をクリックします。しかし、それには何が含まれていますか?ちょうどテキスト(代わりに 'MessageBox'を使用します)?またはフォームの何らかの種類(代わりにダイアログベースのプロジェクトを作成する)?他に何か?最後に –

+0

私はダイアログからいくつかの情報を取得したいと思っています。最初に空のダイアログを表示したいのですが:D –

+1

Visual Studioアプリケーションウィザードを使用して「ダイアログベース」アプリケーションを作成するだけです。これは "空の"ダイアログを作成するのに必要なコードを生成します。後ですべてをゼロから試みることができますが、初心者の方はウィザードを使用することをお勧めします。 – zett42

答えて

2

コンソールアプリケーションでMFCを使用するには、いくつかの初期化が必要です。 これがなければ、あなたは主張を得るでしょう。

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
{ 
    // initialize MFC and print and error on failure 
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) 
    { 
     // TODO: change error code to suit your needs 
     _tprintf(_T("Fatal Error: MFC initialization failed\n")); 
     return 8; 
    } 

また、CDialogにバインドされているリソースも使用する必要があります。適切なコンストラクタを使用できます。または、クラスウィザードを使用してCDialogから独自のダイアログを派生させます。

しかし、MFCコンソールアプリケーションを作成してダイアログを使用するのは意味がありません...あなたの質問には、より詳細な、必要なやり方が必要な場合があります。

このようなプログラミングを続ける前に、いくつかの本や記事を読む必要があるかもしれません。

+2

あなたは 'CDialog'から派生する必要はありません。その場合、すべての明示的なコンストラクタは保護されます(*は*ではありません)。 (CDialogからのデフォルト処理を許可する以外は何もしていないためです)この回答の最も重要な部分は、(a)MFCを適切に設定し、 (b)ダイアログがリソースにバインドされていることを保証する(バインドされていないコンストラクタを使用するのとは対照的に)*どちらも現在OPコードに入っていない*両方が*あるはずである – WhozCraig

+0

アドバイスをいただきました。 。 – xMRi

関連する問題