수색…


비고

WinAPI (Win32, 공식적으로 Microsoft Windows API라고도 함)는 Windows 기능에 액세스 할 수 있도록 Microsoft에서 C로 작성된 응용 프로그램 프로그래밍 인터페이스입니다. WinAPI의 주요 구성 요소는 다음과 같습니다.

  • WinBase : 커널 함수, CreateFile, CreateProcess 등
  • WinUser : GUI 함수, CreateWindow, RegisterClass 등
  • WinGDI : 그래픽 함수, Ellipse, SelectObject 등
  • 일반적인 컨트롤 : 표준 컨트롤, 목록보기, 슬라이더 등

참조 :

버전

API의 버전은 운영 체제 버전과 관련이 있습니다. MSDN 설명서는 API의 각 기능에 대해 지원되는 최소 운영 체제를 지정합니다.

안녕하세요 세계

Microsoft Windows 응용 프로그램은 일반적으로 콘솔 응용 프로그램이나 창 응용 프로그램 (서비스 및 플러그 인과 같은 다른 유형)으로 작성됩니다. 프로그래머의 차이점은 프로그래머가 제공 한 응용 프로그램 소스에 대한 기본 진입 점의 인터페이스 차이입니다.

C 또는 C ++ 응용 프로그램이 시작되면 실행 가능 로더 가 사용하는 실행 가능 진입 점은 컴파일러가 제공하는 런타임입니다. 실행 가능 로더는 실행 파일을 읽고 필요한 이미지에 대한 수정을 수행 한 다음 C 또는 C ++ 프로그램의 경우 컴파일러가 제공 한 런타임 인 ​​실행 가능 진입 점을 호출합니다.

로더에 의해 호출되는 실행 가능 진입 점은 응용 프로그램 프로그래머가 제공하는 주 진입 점이 아니라 컴파일러 및 실행 파일을 작성하는 링커 가 제공하는 런타임입니다. 런타임은 응용 프로그램의 환경을 설정 한 다음 프로그래머가 제공하는 기본 진입 점을 호출합니다.

Windows 콘솔 응용 프로그램에는 프로그래머가 제공하는 기본 진입 점에 대해 몇 가지 약간 다른 인터페이스가있을 수 있습니다. 이것들의 차이는, 메인 엔트리 포인트가 종래의 int main (int argc, char *argv[]) 또는 그것이 Windows 고유의 int _tmain(int argc, _TCHAR* argv[]) 입니다. 응용 프로그램 매개 변수의 문자. Visual Studio를 사용하여 Windows Win32 콘솔 응용 프로그램 프로젝트를 생성하면 생성 된 소스가 Windows 특정 버전이됩니다.

Windows 창 (GUI) 응용 프로그램에는 프로그래머가 제공하는 기본 진입 점에 대해 다른 인터페이스가 있습니다. 런타임이 GUI 환경을 설정하고 응용 프로그램 매개 변수와 함께 추가 정보를 제공하기 때문에 프로그래머가 제공하는이 기본 진입 점은보다 복잡한 인터페이스를 갖습니다.

이 예제에서는 Windows 창 (GUI) 기본 진입 점 인터페이스에 대해 설명합니다. 이 주제를 탐색하려면 다음을 수행해야합니다.

  • 컴파일러가있는 IDE (비주얼 스튜디오가 좋음)
  • C 지식

IDE를 사용하여 빈 Win32 창 (GUI가 아닌 콘솔) 프로젝트를 만듭니다. 링커가 올바른 런타임과 연결할 수 있도록 창 응용 프로그램 (콘솔 응용 프로그램 아님)에 대한 프로젝트 설정을 설정해야합니다. 프로젝트에 추가하는 main.c 파일을 만들고 다음 코드를 입력하십시오.

#include <windows.h>

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

이것은 Win32 "Hello, world"프로그램입니다. 첫 번째 단계는 Windows 헤더 파일을 포함하는 것입니다. 모든 Windows의 기본 헤더는 windows.h 이지만 다른 헤더도 있습니다.

WinMain 은 콘솔 응용 프로그램에서 사용되는 표준 int main() 과 다릅니다. 인터페이스에 더 많은 매개 변수가 사용되며 더 중요한 것은 윈도우 응용 프로그램의 기본 진입 점은 표준 C / C ++과 다른 호출 규칙을 사용한다는 것입니다.

한정자 APIENTRY 인수가 스택 †에 밀려되는 순서입니다 호출 규칙을 나타냅니다. 기본적으로 호출 규칙은 __cdecl 나타내는 표준 C 규칙입니다. 그러나 Microsoft는 __stdcall 한정자로 표시되는 Windows API 함수에 대해 파스칼 규칙 인 다른 형식의 호출 규칙을 사용합니다. APIENTRYwindows.h 포함 된 헤더 파일 중 하나에서 __stdcall 에 대해 정의 된 이름입니다 ( __stdcall이란? 참조 ).

WinMain 의 다음 인수는 다음과 같습니다.

우리는 아직 이러한 주장을 사용하지 않습니다.

WinMain() 내부는 MessageBox() 대한 호출로 메시지와 함께 간단한 대화 상자를 표시합니다. 첫 번째 인수는 소유자 윈도우의 핸들입니다. 아직 창은 없기 때문에 NULL 전달하십시오. 두 번째 인수는 본문 텍스트입니다. 세 번째 인수는 캡션이고 네 번째 인수는 플래그를 포함합니다. 0을 전달하면 기본 메시지 상자가 표시됩니다. 아래 다이어그램은 메시지 상자 대화 상자를 보여줍니다.

여기에 이미지 설명을 입력하십시오.

좋은 링크 :

32 비트 시스템에서만. 다른 아키텍처에는 다른 호출 규칙이 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow