1.4 윈도우 프로그램의 기본 형식
핸들이란?
: 자원을 식별하기 위한 정수 번호
- 윈도우는 핸들이라는 번호를 윈도우 시스템이 관리하는 모든 자원에 부여함
- 윈도우 프로그램은 구조체를 이용해 모든 것을 객체화함
- 이 객체들을 조정하기 위해 핸들이 필요함
1) 새로운 데이터 형식
① MSG 구조체
: MSG 구조체는 메시지 큐에 저장되는 메시지 정보를 담고 있는 구조체임
typedet struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
- hwnd: 이 메시지를 받아서 처리할 윈도우에 대한 핸들을 나타냄
- message: 발생한 메시지를 가지고 있으며, 내부적으로 정수형으로 정의되어 있음
- wParam: 메시지에 대한 추가적인 정보를 담고 있으며, 이 내용은 메시지의 종류에 따라 다른 값을 가질 수 있음
- lParam: 메시지에 대한 추가적인 정보를 담고 있으며, 이 내용은 메시지의 종류에 따라 다른 값을 가질 수 있음
- time: 메시지가 발생한 시간을 담고 있음 (시스템 시간)
- pt: 메시지가 발생했을 때, 화면상의 스크린 좌표를 담고 있음
② WNDCLASSEX 구조체: 윈도우 속성에 대한 정보를 포함함
typedet struct tagWNDCLASSEX {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIConSm;
} WNDCLASSEX;
- cbSize: 구조체의 크기를 나타냄
- style: 윈도우의 스타일을 지정함, 정숫값의 조합으로 지정됨
- lpfnWndProc: 윈도우 프로시저에 대한 포인터를 지정함
- cbClsExtra: 윈도우 클래스의 데이터영역을 나타냄
- cbWndExtra: 윈도우의 데이터영역을 나타냄
- hInstance: 프로그램 자체에 대한 즉, 인스턴스에 대한 핸들을 지정함
- hIcon: 이 윈도우에서 사용될 아이콘에 대한 핸들을 지정함
- hCursor: 이 윈도우에서 사용할 커서에 대한 핸들을 지정함
- hbrBackground: 윈도우의 백그라운드 브러시에 대한 핸들을 지정함
- lpszMenuName: 윈도우에서 메뉴의 이름을 지정하며, 리소스에서 사용됨
- lpszClassName: 윈도우 클래스의 이름 명시함
- hIconSm: 기본적인 작은 아이콘에 대한 핸들을 지정함
③ PAINTSTRUCT 구조체: 텍스트나 이미지를 윈도우의 클라이언트 영역에 그리고자 할 때 사용할 정보를 포함함
typedet struct tagPAINTSTRUCT {
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL flncUpdate;
BYTE rgbReserved[16];
} PAINTSTRUCT;
- hdc: 디스플레이 컨텍스트에 대한 핸들을 지정함
- fErase: 윈도우의 백그라운드를 다시 그릴지 지정함
- rcPaint: 그리고자 하는 영역을 사각형 구조체를 이용하여 지정함
- fRestore: 시스템에 예약되어 있으며, 내부적으로 사용됨
- fIncUpdate: 시스템에 예약되어 있으며, 내부적으로 사용됨
- rgbReserved: 시스템에 예약되어 있으며, 내부적으로 사용됨
④ RECT 구조체: 사각형 형태의 좌표를 지정하며, 왼쪽 상단 좌표와 오른쪽 하단 좌표를 저장함
typedef struct tagRECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
- left: 사각형 영역의 왼쪽 x좌표 명시
- top: 사각형 영역의 위쪽 y좌표 명시
- right: 사각형 영역의 오른쪽 x좌표 명시
- bottom: 사각형 영역의 아래쪽 y좌표 명시
2) 헝가리언 표기법 (Hungarian Notation)
: Microsoft의 헝가리 출생 프로그래머인 찰스 시모니 (Charles Simonyi)를 기리는 뜻으로, 변수 이름은 그 데이터 형식을 의미하는 하나 이상의 소문자로 시작함
3) 윈도우 시스템의 이해
① 윈도우는 GUI (Graphic User Interface)이다.
② 윈도우는 멀티태스킹 (Muti-Tasking)을 지원한다.
③ 윈도우는 메시지 기반 구조 (Message-Driven Architecture)이다.
④ 윈도우는 윈도우 프로시저 (Window Procedure)를 호출한다.
'New > MFC 윈도우 프로그래밍' 카테고리의 다른 글
3. 메시지 처리 (1) (0) | 2024.12.08 |
---|---|
2. MFC 개요 및 아키텍처 (2) (0) | 2024.12.07 |
2. MFC 개요 및 아키텍처 (1) (0) | 2024.12.02 |
1. 윈도우 프로그래밍의 이해 (2) (0) | 2024.11.26 |
1. 윈도우 프로그래밍의 이해 (1) (0) | 2024.11.26 |