Win32 API 1강
- 프로그램 형식의 변화
기존의 main()에서
WinMain() : 응용 프로그램 윈도우 생성
WndProc() : 메시지 처리
로 바뀜
- 윈도우 데이터형 : 데이터형을 아는 것은 사용할 메모리를 아는 것
기존 C, C++ 데이터 형 그대로 가져가지만 윈도우 데이터형이 대거 추가됨.
MSDN을 활용할 것(검색어 : Windows Data Types)
내부적으로는 C, C++의 데이터 형이 사용되지만, 이를 윈도우 스타일로 재정의하여 사용
BYTE : typedef unsigned char BYTE;
BOOL : typedef int BOOL; (TRUE=1, FALSE=0)
CHAR : typedef char CHAR;
COLORREF : typedef DWORD COLORREF; (RGB 값을 저장하기 위한 데이터형)
DWORD : typedef unsigned long DWORD;
PVOID : typedef void * PVOID; (보이드형 메모리 주소를 저장하는)
핸들과 관련된 것은 void 포인터로 정의되어있음.
HANDLE : typedef PVOID HANDLE;
HDC : typedef HANDLE HDC;
HGDIOBJ : typedef HANDLE HGDIOBJ;
HINSTANCE : typedef HANDLE HWND;
LP로 시작하면 포인터형
LPVOID : typedef void * LPVOID;
LPWORD : typedef WORD *LPWORD; (WORD에 대한 포인터 변수)
LPSTR : typedef CHAR *LPSTR;
LPWSTR : typedef WCHAR *LPWSTR;
LPTSTR : #ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
TCHAR : #ifdef UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif
UINT : typedef unsigned int UINT;
VOID : #define VOID void
WINAPI : #define WINAPI __stdcall
WORD : typedef unsigned short WORD; 0 ~ 65535
WPARAM : typedef UINT_PTR WPARAM;
UINT_PTR : #if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#else
typedef unsigned int UINT_PTR;
LPARAM : typedef LONG_PTR LPARAM;
LONG_PTR : #if defined(_WIN64)
typedef __int64 LONG_PTR;
#else
typedef long LONG_PTR;
#endif
- 인스턴스와 핸들 (☆☆☆☆☆)
운영체제는 멀티태스킹 운영체제이다.
운영체제가 응용 프로그램을 실행하거나 구분하기 위하여 인스턴스와 핸들을 사용한다.
인스턴스와 핸들은 4바이트의 양의 정수값이다.
* 인스턴스
인스턴스는 응용 프로그램의 아이디이다.
같은 종류의 프로그램은 같은 인스턴스를 가진다.
* 핸들
운영체제에서 할당한 자원의 아이디이다. (자원 : 윈도우, 펜, 브러쉬 등)
동종의 응용 프로그램이라 할지라도 각각의 윈도우 자원은 다르기 때문에 핸들 값은 다르다.
* 인스턴스와 핸들의 공통점
운영체제에서 할당하는 값이다.
중복되지 않는 값이다. -> 아이디의 속성과 유사하다.
* 윈도우 프로그래밍을 할 때 가장 중요한 요소는 핸들이다.
HWND, HDC, HPEN, HBRUSH 등 H로 시작하는 자료형들이 핸들에 해당된다.(이들은 결국 void*에 해당된다.)
- 헝가리언 표기법
변수명 또는 함수명의 명명 규칙이다. 관례적으로 사용되고, 변수명만으로도 파악이 용이하다.
* 사용 방법
의미 있는 단어를 연결하되 첫 문자는 대문자로 한다. (ex. Person + Count = PersonCount)
데이터형을 의미하는 접두사를 붙임 (ex. fCount, nNumber) 접두사는 소문자로 한다.
* 변수명에 붙이는 접두사
데이터형 접두사 예 비고
BOOL, bool b bVariable
char ch, c cVariable 주로 c를 사용
int, short i, n nVariable 주로 n을 사용
long l lVariable
float f fVariable
double d dVariable
배열 a aVariable[10]
DWORD dw dwVariable
문자열 sz,s,str szVariable 주로 str 사용
포인터 p pVariable
핸들 h hVariable
전역변수 g_ g_nVariable 전역변수임을 g_로 표현, 정수형이므로 뒤에 n을 붙인 예
윈도우 메시지 msg msgMessage