Notice
Recent Posts
관리 메뉴

Hacking Arts

WinMain() 과 WndProc() 본문

Programing/API Programing

WinMain() 과 WndProc()

Rakehell 2014. 9. 19. 02:04

-윈도우 프로그램은 기본적으로 WinMain함수와 WndProc 함수로 구성된다. 두 함수는 필수 함수이다. WndProc는 다른 이름으로 수정 가능하다.


WinMain()
{
	윈도우_클래스_만들기
	윈도우_객체_생성하기
	윈도우_객체_화면에_띄우기
	메시지_루프_돌리기
}
WndProc()
{
	전달된_메시지_처리하기
}

위와 같은 기본 구조를 나타낼 수 있다.

WinMain()함수는 윈도우 생성을 담당한다.

WndProc()함수는 윈도우 메시지가 발생하면 처리하는 부분을 담당한다고 생각하면 된다.


WinMain함수는 그림1과 같은 일을 하게된다.

[그림1]


다음 WndProc는 메시지루프를 돌면서 들어오는 메시지들을 처리하게 된다.WndProc는 윈도우 프로시져 윈프록등으로 불린다.


<WinMain>

 인수

 설명

hInstance

현재 실행되고 있는 프로그램의 인스턴스 핸들 

 hPrevInstance

 바로 앞에 실행된 프로그램의 인스턴스 핸들, 통상 NULL 값을 준다.

 lpCmdLine

 명령행 인자. main함수의 argv에 해당

 nCmdShow

 윈도우를 보여주는 형태의 플래그


-인스턴스 핸들이란?

메모리에 생성된 클래스의 실체를 말한다. 인스턴스 핸들은 프로그램(클래스들의 집합) 메모리에 실제로 올라온 것을 의미하며, 각 프로그램마다 고유하다. 예를 들어서 메모장 프로그램을 동시에 두 개 실행시키면 같은 프로그램이더라도 두 개가 독립적으로 실행된다.두 프로그램은 각각 메모리에 올라온 프로그램 이고, 각각 고유의 인스턴스를 가지고 있다.


-핸들 이란?

어떤 대상에 붙여진 레이블(label)과 같은 것으로 대상을 식별하는데 주로 사용된다. 윈도우나 컨트롤을 핸들을 이용하여 관리 할 수도 있다. 예로 자동차가 10대가 존재하면 자동차를 윈도우로 가정했을 때 각 자동차에는 핸들이 있고, 핸들가지고 원하는 방향으로 이끌 수 있다. 윈도우의 핸들을 이용하여 원하는 방향으로 윈도우를 조작할 수 있는 것과 같다.

1.핸들 값은 예외 없이 모두 접두어 h로 시작한다.

2.핸들은 정수형이며 32비트 값이다.

3.핸들은 운영체제가 발급하며, 사용자는 할당된 핸들을 쓰기만 하면 된다.

4.같은 종류의 핸들끼리는 절대 중복된 값을 가지지 않는다.

5.핸들은 단순한 구분자이므로 핸들에 어떤 값이 들어가 있는지 알 필요가 없다.



-참고자료

API Programing / 이창현 / 혜지원