프로그래밍/API

Windows API 기본 서식

musiklo 2020. 12. 20. 21:25

Windows API에 쓰이는 기본 서식입니다. 

#include<windows.h> //윈도우 헤더파일

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // CALLBACK 매크로 
HINSTANCE g_hinst; // 인스턴스 핸들 
LPCTSTR lpszClass = TEXT("First File"); // 제목 표시줄에 표시되는 내용


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) // MAIN 함수 
{
	HWND hWnd; // 윈도우 핸들 선언 
	MSG Message; // 메세지 구조체 변수 선언 
	WNDCLASS WndClass; // Windows Class 구조체 변수 선언 
	g_hinst = hInstance; // hInstance값을 외부에서도 사용할 수 있도록 // 전역변수에 값을 저장
	WndClass.cbClsExtra = 0; // 예약 영역. 지금은 사용x
	WndClass.cbWndExtra = 0;  // 예약 영역
	WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 윈도우의 배경 색상을 지정
	WndClass.hCursor = LoadCursor(NULL, IDC_NO); // 윈도우의 커서(마우스포인터) 모양을 지정
	WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//윈도우의 커서 아이콘 모양 지정
	WndClass.hInstance = hInstance; // 윈도우 클래스를 등록하는 프로그램 번호
	WndClass.lpfnWndProc = WndProc; // 윈도우 메세지 처리 함수 지정
	WndClass.lpszClassName = lpszClass; // 윈도우 클래스의 이름 지정
	WndClass.lpszMenuName = NULL; // 이 프로그램의 메뉴 지정
	WndClass.style = CS_HREDRAW | CS_VREDRAW; // 윈도우의 스타일을 정의

	RegisterClass(&WndClass); // WNDCLASS 구조체의 번지를 전달

	// 윈도우를 생성하고 창에 표시하는 기능을 수행
	hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
		CW_USEDEFAULT/*100,100,500,500*/, NULL, (HMENU)NULL, hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);

	// 메세지 루프를 실행
	while (GetMessage(&Message, NULL, 0, 0)) { // Queue에 있는 메세지를 읽어들인다
		TranslateMessage(&Message); // 키보드 입력 메세지를 가공하여 프로그램에서 쉽게
									// 사용할수 있도록 
		DispatchMessage(&Message); // 메세지를 윈도우의 메세지 처리 함수 WndProc로 전달
	}
	return(int)Message.wParam; // 탈출 코드. 프로그램 종료
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM IParam)
{
	switch (iMessage) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return(DefWindowProc(hWnd, iMessage, wParam, IParam));
}

'프로그래밍 > API' 카테고리의 다른 글

DC(Device Context)의 개념  (0) 2020.12.21