WinMain 함수(winbase.h)

그래픽 Windows 기반 애플리케이션에 대한 사용자가 제공한 진입점입니다.

WinMain 은 애플리케이션 진입점에 사용되는 기존 이름입니다. 자세한 내용은 설명 부분을 참조하세요.

구문

int __clrcall WinMain(
  [in]           HINSTANCE hInstance,
  [in, optional] HINSTANCE hPrevInstance,
  [in]           LPSTR     lpCmdLine,
  [in]           int       nShowCmd
);

매개 변수

[in] hInstance

형식: HINSTANCE

애플리케이션의 현재 instance 대한 핸들입니다.

[in, optional] hPrevInstance

형식: HINSTANCE

애플리케이션의 이전 instance 대한 핸들입니다. 이 매개 변수는 항상 NULL입니다. 다른 instance 이미 있는지 검색해야 하는 경우 CreateMutex 함수를 사용하여 고유하게 명명된 뮤텍스를 만듭니다. 뮤텍스가 이미 있더라도 CreateMutex는 성공하지만 함수는 ERROR_ALREADY_EXISTS 반환합니다. 이는 먼저 뮤텍스를 만들었기 때문에 애플리케이션의 다른 instance 있음을 나타냅니다. 그러나 악의적인 사용자는 이전에 이 뮤텍스를 만들고 애플리케이션이 시작되지 않도록 할 수 있습니다. 이 상황을 방지하려면 임의로 명명된 뮤텍스를 만들고 권한이 있는 사용자만 가져올 수 있도록 이름을 저장합니다. 또는 이 용도로 파일을 사용할 수 있습니다. 애플리케이션을 사용자당 하나의 instance 제한하려면 사용자의 프로필 디렉터리에 잠긴 파일을 만듭니다.

[in] lpCmdLine

형식: LPSTR

프로그램 이름을 제외한 애플리케이션의 명령줄입니다. 전체 명령줄을 검색하려면 GetCommandLine 함수를 사용합니다.

[in] nShowCmd

형식: int

창을 표시하는 방법을 제어합니다. 이 매개 변수는 ShowWindow 함수에 대한 nCmdShow 매개 변수에 지정할 수 있는 값일 수 있습니다.

반환 값

형식: int

함수가 성공하면 WM_QUIT 메시지를 받으면 종료되며 해당 메시지의 wParam 매개 변수에 포함된 종료 값을 반환해야 합니다. 메시지 루프를 입력하기 전에 함수가 종료되면 0을 반환해야 합니다.

설명

WinMain이라는 이름은 많은 프로그래밍 프레임워크에서 규칙에 의해 사용됩니다. 프로그래밍 프레임워크에 따라 WinMain 함수에 대한 호출이 선행되고 그 뒤에 해당 프레임워크와 관련된 추가 작업이 뒤따를 수 있습니다.

WinMain은 애플리케이션을 초기화하고, 기본 창을 표시하고, 애플리케이션 실행의 나머지 부분에 대한 최상위 제어 구조인 메시지 검색 및 디스패치 루프를 입력해야 합니다. WM_QUIT 메시지를 받으면 메시지 루프를 종료합니다. 이 시점에서 WinMain 은 애플리케이션을 종료하고 WM_QUIT 메시지의 wParam 매개 변수에 전달된 값을 반환해야 합니다. PostQuitMessage 호출의 결과로 WM_QUIT 수신된 경우 wParam 값은 PostQuitMessage 함수의 nExitCode 매개 변수 값입니다. 자세한 내용은 메시지 루프 만들기를 참조하세요.

ANSI 애플리케이션은 WinMain 함수의 lpCmdLine 매개 변수를 사용하여 프로그램 이름을 제외한 명령줄 문자열에 액세스할 수 있습니다. lpCmdLineLPTSTR 데이터 형식 대신 LPSTR 데이터 형식 을 사용합니다. 즉 , WinMain 은 유니코드 프로그램에서 사용할 수 없습니다. GetCommandLineW 함수를 사용하여 명령줄을 유니코드 문자열로 가져올 수 있습니다. 일부 프로그래밍 프레임워크는 유니코드 명령줄을 제공하는 대체 진입점을 제공할 수 있습니다. 예를 들어 Microsoft Visual Studio C++ 규격은 유니코드 진입점에 wWinMain 이라는 이름을 사용합니다.

예제

다음 코드 예제에서는 WinMain을 사용하는 방법을 보여 줍니다.

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
    return MessageBox(NULL, "hello, world", "caption", 0);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)

추가 정보

개념

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

기타 리소스

PostQuitMessage

참조

TranslateMessage

Windows