본문 바로가기
Programming/Win_API

윈도우즈 API - 윈도우 창

by bbolmin 2012. 8. 15.

윈도우 클래스의 종류

 

1) 시스템 전역 클래스 : 운영체제에 미리 등록되어 있는 윈도우 클래스이다. (컨트롤, 메뉴, 대화상자 등..)

2) 응용 프로그램 전역 클래스 : 주로 DLL에 의해 등록되며 여러 프로그램에서 공유할 커스텀 컨트롤을 만드는데 사용.

3) 응용 프로그램 로컬 클래스 : 응용 프로그램 자신의 메인 윈도우, 차일드 윈도우, 커스텀 컨트롤을 만드는데 사용.

 

 

 

 

윈도우즈 API프로그래밍에서 윈도우를 만드는 순서를 살펴보면 다음과 같다.

 

 

1. 윈도우 클래스를 만든다. (WNDCLASS)

 

WNDCLASS는 총 10개의 멤버로 구성되며 중요한 멤버 3가지를 살펴보자.

 

- lpszClassName : 등록하고자 하는 윈도우 클래스의 이름

- lpfnWndProc : 메시지 처리 함수 지정.

- hInstance : 이 윈도우 클래스를 등록한 응용 프로그램의 인스턴스 핸들. (WinMain의 hInstnace)

 

 

2. RegisterClass 함수로 윈도우 클래스를 등록한다.

 

3. CreateWindow로 윈도우를 생성한다.

 

원형 : HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam)

lpszClassName : WNDCLASS에 등록한 윈도우 클래스 지정

lpszWindowName : 윈도우 타이틀바의 문자열

 

메인 윈도우말고도 대화상자, 버튼, 에디트 등의 컨트롤도 모두 윈도우이다. 이런 컨트롤의 경우는 운영체제에 등록되어 있어 (3)의 CreateWindow 만으로 생성가능하다.

 

 

 

윈도우 창을 띄우는 소스

 

 

------------------------------------------------------------------------------

WNDCLASS 속성 변경

 

(32bit)

- DWORD GetClassLong(HWND hWnd, int nIndex);

- DWORD SetClassLong(HWND hWnd, int nIndex, LONG dwNewLong);

 

(32bit & 64bit)

- LONG_PTR GetClassLongPtr(HWND hWnd, int nIndex);

- ULONG_PTR SetClassLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong);