윈도우 프로그램을 개발하기 위해서는 운영체제가 제공해주는 함수를 통해서 개발하는 방식인 C/C++ 언어로 윈도우 API를 호출해서 프로그램을 구현하는 방식과 Visual C++을 통해서 마이크로소프트사에서 제공하는 윈도우 응용 프로그램 개발 키트를 통해서 개발하는 방식이 있습니다.
Windows API는 응용 프로그램을 개발할 때 사용할 수 있게 Windows 운영체제에서 제공하는 라이브러리입니다.
모든 WinAPI 프로그램은 가장 먼저 'windows.h'라는 헤더 파일을 포함해야 합니다. 이 헤더 파일은 내부적으로 WinAPI에서 사용하는 상수, 매크로, 구조체와 함수원형 등에 대한 선언을 담고 있는 여러 가지 부문별 헤더를 포함하고, WinMain 함수와 윈도우 프로시저 함수로 구성되어 있습니다.
#include <windows.h>
① 윈도우 클래스 정의 : WNDCLASSEXW 라는 윈도우 클래스 구조체를 사용하여 윈도우를 생성하기 위한 기본 속성을 정의합니다.
② 윈도우 클래스 등록 : RegisterClass() 함수를 사용하여 윈도우 클래스를 등록합니다.
③ 윈도우 객체 생성 : CreateWindow() 함수를 사용하여 윈도우 객체를 생성합니다.
④ 화면에 윈도우 보이기 : ShowWindow() 함수를 사용하여 생성된 윈도우 객체가 화면에 보이게 합니다.
⑤ 메시지 루프 : 메시지 큐에서 메시지를 가져와서 처리하는 반복문
GetMessage와 PeekMessage의 차이는 프로그램 실행이 큐에 있는 메세지가 'WM_Quit'인지 여부로 구분되는지 혹은 메세지가 있는지 없는지로 구현된다는 점이다.
GetMessage는 메세지가 Quit인지 확인하기 때문에 사용자가 만약 프로그램을 종료시키지 않고 가만히 있다면 끝까지 모든 메세지가 사용되었을때 프로그램이 종료되는 사건이 발생한다.
그에 반에 PeekMessage는 메세지의 존재 유무로 판단하기에 메세지가 존재하지 않더라도 프로그램이 종료되지 않게 할 수 있다.
WinProc는 '윈도우 프로시저'라고 불리는 함수인데, 프로그램이 실행되는 동안 발생하는 모든 메시지를 여기에서 처리합니다.!
HWND : 메시지가 전달될 윈도우 핸들
UINT : 메시지의 종류
WPARAM : 메시지의 부가 정보
LPARAM : 메시지의 부가 정보