2016-12-31 12 views
0

非常に単純なバックグラウンドアプリケーションを作成したい。 は、私は空のC++プロジェクトを開始し、私は以下のコードでsource.cppファイルを作成します。ゼロからC++バックグラウンドMFCアプリケーションを作成する

#include "Windows.h" 

int WINAPI _tWinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPTSTR  lpCmdLine, 
    int  nCmdShow) 
{ 
    MSG Msg; 

    while (GetMessage(&Msg, NULL, 0, 0)) 
    { 

    } 

    return 0; 
} 

その後、私は次のようにプロジェクトの設定を設定します。

プロパティ - >構成プロパティ - >リンカ - >システム:セットのサブシステムがされています。Windows(/ SUBSYSTEM:WINDOWS)

プロパティ - >構成プロパティ - >リンカ - >詳細設定 - >設定エントリポイントがされています_tWinMain

私は右のそれをやっていますか?また、このプロジェクトにMFCライブラリを追加して、MFCの機能を使用できるようにしたいのですが、どうすればいいですか? :)

編集読み取るための

ありがとう:消える: 奇妙な、私はちょうど "TCHAR.H" とエラー[エントリポイントを定義する必要がありますLNK1561]を含める必要があります。私はもうプロジェクト設定を構成する必要はありません。私が必要とするのは以下のコードです:

#include "Windows.h" 
#include "tchar.h" 

int WINAPI _tWinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPTSTR  lpCmdLine, 
    int  nCmdShow) 
{ 
    //MessageBox(0, _T("test"), _T("Test"), 0); 

    return 0; 
} 
+0

私は完全にWindowsプロセスの実行方法を理解することができますので、ゼロから作成したいと思います。 – 123iamking

+0

エントリーポイントを弄ばないでください。デフォルトのままにしておきます。 '_tWinMain'に設定すると、**必須** CRT起動コードをスキップします。これには、静的記憶期間を持つオブジェクトのイニシャライザが含まれます。 Windowsプロセスの仕組みを理解したい場合は、Russinovichの* Windows Internals *のような本を読んでください。何をしても、MFCを追加しないでください。それは、何が起こっているかを理解するのがずっと難しくなります。さらに、C++に習熟していない場合、Windows APIまたはMFC。 – IInspectable

+0

エントリポイントを設定しないと、プロジェクトはビルドされません。エラーが表示されます。エントリポイントを定義する必要があります。次のようにします。http://stackoverflow.com/questions/17070367/link-fatal -error-lnk1561-entry-point-be-defined-error-in-vc – 123iamking

答えて

2

ドキュメントとビューを使用せずにSDIアプリケーションを作成します。必要なオプションだけを確認してください。ほとんどの場合、バックグラウンドアプリケーションでもウィンドウメッセージを取得するためにウィンドウが必要です。

作成されたメインウィンドウをそのままにして表示しないで、m_nCmdShowをSW_HIDEに設定します。このメインウィンドウを破棄すると、メッセージループが終了し、プログラムが停止します。

その後、メインフレームからツールバーのような未使用のものを削除することがあります。

もう1つの方法は、ウィザードを使用してダイアログベースのアプリケーションを作成することです。ダイアログを作成せずに独自のメッセージポンプを使用する。

while (OuterCondition()) 
{ 
    while(::PeekMessage(&message, NULL , WM_MIN, WM_MAX, PM_NOREMOVE)) 
    { 
    ::AfxPumpMessage(); 
    } 
} 

また、MsgWaitForMultipleObjectsも便利です。

通常、MFCを正しく初期化するには、CWinAppオブジェクトが必要です。

+0

OPはおそらく質問に誤ってタグを付けました。これは、MFCに関連するのではなく、むしろWindows APIに関する直接の質問です。 – IInspectable

関連する問題