원문 http://wisdom.sakura.ne.jp/system/winapi/win32/win7.html
준비된 윈도우
그럼, 슬슬 윈도우 작성에 들어가고 싶다고 생각합니다.
이게 끝나지 않으면, 그래피컬한 프로그래밍의 설명에 들어갈 수 없습니다.
Windows 프로그래밍에서는, 윈도우의 생성을 두개의 작업으로 나뉩니다.
하나는 윈도우 클래스의 등록입니다.
비교적 범용적인 설정을 하고, 이것을 등록해 돌려쓰는 것이 가능합니다.
또 하나는, 직접적인 윈도우의 생성작업 입니다.
등록된 윈도우 클래스를 기반으로, 윈도우를 생성합니다.
일단 이 부분에서는, 그 둘 중 후자의 윈도우 생성작업을 설명합니다.
이 작업에는 윈도우 클래스가 필요합니다만,
미리 준비되어있는 윈도우 클래스가 몇가지 있으므로, 그것을 이용합시다.
윈도우의 생성에는 CreateWindow() 함수를 사용합니다.
이 함수는 다음 인수를 받습니다.
HWND CreateWindow(
LPCTSTR lpClassName, LPCTSTR lpWindowName,
DWORD dwStyle,
int x, int y, int nWidth, int nHeight,
HWND hWndParent, HMENU hMenu,
HANDLE hInstance, LPVOID lpParam
);
이 함수는, 반환값으로 HWND형(型)의 값을 반환합니다.
이는 윈도우 핸들이라고 불리는 것입니다.
객체(오브젝트) 지향 경험자에게는, 윈도우 객체에 대한 참조라고 하면 간단하지요?
윈도우 핸들이라고 함은, 개개의 윈도우를 식별하기 위한 값 같은 것 입니다.
Windows의 모든 윈도우에는 핸들이 존재합니다.
윈도우를 조작할 때에는, 함수에 핸들을 전하는 것으로
어떤 윈도우를 조작하고 있는가를 알려주는 것으로 구성되어 있습니다.
CreateWindow() 함수는 윈도우의 생성에 실패하면 NULL을 반환합니다.
lpClassName은, 방금 설명한 윈도우 클래스의 이름을 지정합니다.
윈도우 클래스는, 여러개 준비된 것이 있으므로 여기서는 그것을 사용합니다.
지금은 텍스트 필드용의 윈도우 클래스 STATIC을 사용합니다.
여기에서 지정된 문자열로, 그 이름을 가진 윈도우 클래스를 생성한 윈도우를 연결해줍니다.
lpWindowName은 윈도우의 이름을 지정합니다.
버튼 윈도우 등은, 이 이름을 레이블로써 붙여다 주기도 합니다.
dwStyle은, 윈도우의 스타일을 지정합니다.
이는 준비된 많은 정수의 파라메터들 중에서 하나를 고릅니다.
추후 작성 예정.