API 헤더 파일
-> 윈도우즈에서는 하나의 헤더 파일에 모든 API 함수들의 원형과 사용하는 상수들이 죄다 정의되어 있기 때문에 windows.h만 포함하면 된다.
-> windows.h를 포함하고 난 후에 함수 원형과 전역변수를 선언한다.
시작점
-> 윈도우즈는 여러 개의 프로그램이 동시에 실행되는 멀티 테스킹 시스템일 뿐만 아니라
하나의 프로그램이 여러 번 실행될 수도 있다.
-> 이때 실행되고 있는 각각의 프로그램을 프로그램 인스턴스라고 하며 간단히 줄여서 인스턴스라고 한다.
hInstance
->프로그램 자체를 일컫는 정수값이며 프로그램 내부에서 자기 자신을 가리키는 1인칭 대명사이다.
메시지 처리 함수(WndProc)
-> WndProc은 사용자와 시스템이 보내오는 메시지를 처리하는 함수이다.
-> 소스를 분석할 때 주의깊게 봐야 할 부분은 WinMain이 아니라 WndProc이다.
윈도우 클래스
-> 윈도우 클래스는 windows.h에 다음과 같이 정의되어 있는 구조체이다.
typedef struct tagWNDCLASS
{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hicon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASS;
WNDCLASS 구조체의 각 멤버 의미는 다음과 같다.
style
-> 윈도우가 어떤 형태를 가질 것인가를 지정하는 멤버
-> CS_HREDRAW와 CS_VREDRAW 값을 OR 연산자( | )로 연결하여 사용한다.
-> 이 스타일은 윈도우의 수직(또는 수평) 크기가 변할 경우 윈도우를 다시 그린다는 뜻이다.
lpfnWndProc
-> 윈도우의 메시지 처리 함수를 지정한다.
-> 메시지 처리 함수의 이름은 보통 WndProc로 정해져 있는 편이다.
hInstance
-> 윈도우 클래스를 등록하는 프로그램의 번호
hIcon, hCursor
-> 윈도우가 사용할 마우스 커서와 아이콘
hbrBackground
-> 윈도우의 배경 색상을 지정
lpszMenuName
-> 이 프로그램이 사용할 메뉴를 지정
lpszClassName
-> 윈도우 클래스의 이름을 문자열로 정의
-> 변수명이나 함수명을 만들듯이 마음대로 작성할 수 있다.
이 중에 제일 중요한 멤버는 윈도우 클래스의 이름을 정의하는 lpszClassName과
메시지 처리 함수를 지정하는 lpfnWndProc이다.
나머지는 대부분 디폴트나 0, NULL 같은 값들을 주면 무난하다.
'Programming > Windows APi' 카테고리의 다른 글
Windows API_유니코드 (0) | 2020.10.25 |
---|---|
Windows API_핸들(handle)에 대한 이해 (0) | 2020.10.25 |
Windows API_윈도우즈 프로그래밍에서 주로 사용되는 접두어 (0) | 2020.10.25 |
Windows API_화면에 선 그리기 (0) | 2020.10.09 |
Windows API_개론 (0) | 2020.10.09 |