윈도우 프로그램의 기본 구조

상준·2025년 9월 4일

윈도우 프로그램 구조

크게 두 부분으로 나뉨

  • 초기화하는 부분: WinMain() 함수에서 담당
  • 메시지를 처리하는 부분: WndProc() 함수에서 담당

WinMain() 함수 - 프로그램의 시작과 끝

WinMain() 함수에서 시작해서 WinMain() 함수가 끝나면 프로그램이 종료됨

역할
1. 운영체제에 윈도우 클래스를 만들어 등록
  1-1. 클래스는 윈도우의 종류를 나타냄
  1-2. 윈도우의 특징 등을 정의하고 등록한 후 윈도우를 생성
2. 프레임 윈도우를 생성하고 속성을 초기화하여 화면에 표시
3. 메시지 큐로부터 메시지를 받아와 메시지를 해당 윈도우 프로시저로 보냄

함수의 원형과 초기화 내용

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, 
				LPTSTR lpszCmdLine, int nCmdShow)
{
  윈도우 클래스 생성
  윈도우 클래스 등록
  프레임 윈도우 생성
  프레임 윈도우 화면에 표시
  메시지 큐로부터 메시지를 받아 해당 프로시저로 보냄
}

매개변수 설명

WINAPI: 윈도우 애플리케이션이라는 의미
hInstance: 애플리케이션 프로그램의 ID
hPrevInstance: 이전 인스턴스의 핸들 (항상 NULL 값, 현재 사용하지 않음)
lpszCmdLine: 실행 파일의 경로 등을 나타내는 문자열 포인터
nCmdShow: 윈도우가 화면에 표시될 때의 상태(최대화, 최소화)

WndProc() 함수 - 메시지를 처리하는 곳

윈도우 시스템에서 들어온 메시지를 처리함

함수 이름에 Proc가 붙으면 주로 메시지를 처리하는 함수로 윈도우 클래스마다 필요함

윈도우 시스템에서 들어온 메시지를 switch문을 이용하여 처리하는 루틴

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
 switchmessage){
 해당 메시지에 대한 처리
 }
 }

LRESULT: 결괏값을 저장하는 32bit 자료형임
CALLBACK 함수: 어떤 메시지에 의해 감추어진 형태로 구동되는 함수

WinMain() 함수에서 직접 호출하는 코드는 없음
CALLBACK 함수이므로 WinMain() 함수의 while 메시지 루프에 의하여 뒤에서 감추어진 상태로 구동됨

profile
컴공생 공부

0개의 댓글