2016-12-31 8 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; 
} 

다음 나는 다음과 같이 프로젝트의 설정을 설정합니다

속성 -> 구성 속성 -

내가 바로 그 일을하고 있는가 _tWinMain

:> 링커 -> 시스템 : 설정 하위 시스템입니다 : 윈도우 (/ SUBSYSTEM : WINDOWS)> 설정 엔트리 포인트가 -

속성 -> 구성 속성 -> 링커 -> 고급? 또한 MFC 함수를 사용할 수 있도록이 프로젝트에 MFC 라이브러리를 추가하려면 어떻게해야합니까? 읽기

감사합니다 :)

편집 : 사라 : [진입 점을 정의해야합니다 LNK1561]이 이상한, 난 그냥 "tchar.h"오류를 포함해야합니다. 더 이상 프로젝트 설정을 구성 할 필요가 없습니다. 필요한 코드는 다음과 같습니다.

#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-must-be-error-in-vc – 123iamking

답변

2

문서 및보기를 사용하지 않고 SDI 응용 프로그램을 만듭니다. 필요한 옵션 만 선택하십시오. 대부분의 경우 배경 응용 프로그램이 창 메시지를 가져 오는 창도 필요합니다.

작성된 기본 창을 그대로두고 표시하지 않으려면 m_nCmdShow를 SW_HIDE로 설정하십시오. 이 기본 창을 삭제하면 메시지 루프가 끝나고 프로그램이 중지됩니다.

나중에 메인 프레임에서 도구 모음과 같이 사용하지 않은 다른 것들을 제거 할 수 있습니다.

또 다른 방법은 마법사를 사용하여 대화 상자 기반 응용 프로그램을 만드는 것입니다. 대화 상자를 만들지 않고 자신의 메시지 펌프를 사용하지 않습니다.

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

또한 MsgWaitForMultipleObjects가 유용 할 수 있습니다.

일반적으로 MFC를 올바르게 초기화하려면 CWinApp 개체가 필요합니다.

+0

OP는 아마도 질문에 잘못 태그를 붙였습니다. 이것은 MFC와 관련이 없지만 Windows API와 관련하여 직접적인 질문입니다. – IInspectable

관련 문제