Language/WinAPI2011.09.06 14:51
윈도우 클래스를 등록한 후에는 윈도우 클래스를 기본으로 실제 윈도우를 생성하게된다. 윈도우를 생성할 때에 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);



CreateWindow 함수의 Argument

lpClassName
생성하고자 하는 윈도우의 클래스를 지정하는 문자열이다. WNDCLASS 구조체의 lpszClassName 멤버가 인자로 들어간다.

lpWindowName
윈도우의 타이틀 바에 나타날 문자열이다. 이 인자에 문자열을 지정하면 윈도우의 타이틀 바에 나타난다.

dwStyle
만들고자 하는 윈도우의 형태를 지정하는 인자이다. 비트 필드값으로 매크로 상수들이 정의되어 있다. OR 연산자로 연결하여 윈도우의 다양한 형태를 지정한다. 스타일에 대한 설명은 다음과 같다.

// 편집 해야함
WS_OVERLAPPED 디폴트 윈도우. 타이틀 바와 크기 조절이 안되는 경계선을 가진다.
                              아무런 스타일도 주지 않으면 이 스타일이 적용된다.
WS_POPUP 팝업 윈도우를 만든다. WS_CHILD와 함께 쓸 수 없다.
WS_CHILD 차일드 윈도우를 만든다. WS_POPUP과 함께 쓸 수 없다.
WS_MINIMIZE 최초 최소화된 상태로 윈도우를 만든다.
WS_VISIBLE 윈도우를 만들자 마자 화면에 출력한다.
WS_DISABLED 사용금지된 상태, 즉 입력을 받아들일 수 없는 상태로 만든다. 
WS_CLIPSIBLINGS 차일드끼리 상호 겹친 영역은 그리기 영역에서 제외된다.
WS_CLIPCHILDREN 차일드가 위치한 영역은 그리기 영역에서 제외된다.
WS_MAXIMIZE 최초 최대화된 상태로 윈도우를 만든다.
WS_CAPTION 타이틀 바를 가진 윈도우를 만들며 WS_BORDER 스타일을 포함한다.
WS_BORDER 단선으로 된 경계선을 만들며 크기 조정은 할 수 없다.
WS_DLGFRAME 두꺼운 경계선을 가지며 타이틀 바를 가질 수 없다.
WS_VSCROLL 수직 스크롤 바를 가진 윈도우를 만든다.
WS_HSCROLL 수평 스크롤 바를 가진 윈도우를 만든다.
WS_SYSMENU 시스템 메뉴를 가진 윈도우를 만든다.
WS_THICKFRAME 크기 조정이 가능한 두꺼운 경계선을 가진다.
WS_GROUP 라디오 버튼 등 그룹을 이루는 컨트롤의 그룹 지정에 사용된다.
WS_TABSTOP Tab키로 포커스를 이동할 수 있도록 한다.
WS_MINIMIZEBOX 최소화 버튼을 만든다.
WS_MAXIMIZEBOX 최대화 버튼을 만든다.
WS_OVERLAPPEDWINDOW 가장 일반적인 윈도우 스타일. 
                                           WS_OVERLAPPED |WS_CAPTION |WS_SYSMENU |
                                           WS_THICKFRAME|WS_MINIMIZEBOX |WS_MAXIMIZEBOX 
                                           스타일들이 조합된 스타일이다.

WS_POPUPWINDOW 일반적인 팝업 윈도우. WS_POPUP |WS_BORDER |WS_SYSMENU
WS_CHILDWINDOW WS_CHILD와 같다.

x,
y
윈도우의 좌표를 설정한다. CW_USEDEFAULT 를 사용하면 운영체제가 적당한 위치를 설정해준다.

nWidth, nHeight
윈도우의 수평 크기와 수직 크기를 픽셀 단위로 지정한다. CW_USEDEFAULT 를 사용하면 운영체제가 적당한 크기를 설정해준다.

hWndParent
부모 윈도우가 있을 경우 부모 윈도우의 핸들을 지정한다. 자신이 최상위 윈도우일 경우는 NULL 로 지정한다.

hMenu
윈도우에서 사용할 메뉴의 핸들을 지정한다. WNDCLASS 구조체에서 메뉴를 지정하는 멤버가 있으며 지정한 메뉴를 그대로 사용하려면 NULL 로 지정하면 된다. 다른 메뉴를 사용하려면 원한느 메뉴 핸들을 지정해야한다.

hInstance
프로그램의 핸들을 지정한다. 운영체제가 프로그램이 종료될 때 파괴되지 않은 윈도우를 자동으로 파괴한다.

lpParam
CREATESTRUCT 구조체의 주소이며 여러 개의 윈도우를 만들 때 각 윈도우에 고유의 파라미터를 전달하는 특수한 목적에 사용되므로 보통은 NULL 을 사용한다.



CreateWindow 함수의 Argument

윈도우 생성에 성공하면 생성된 윈도우의 핸들을 리턴한다.
에러가 발생하면 NULL 을 리턴한다.








'Language > WinAPI' 카테고리의 다른 글

ShowWindow 함수 - 20110907  (0) 2011.09.07
CreateWindow 함수 - 20110906  (0) 2011.09.06
RegisterClass 함수 - 20110904  (0) 2011.09.04
WinMain 함수 - 20110902  (0) 2011.09.02
SendMessage 함수 - 20110902  (0) 2011.08.30
Timer (타이머) - 20110830  (0) 2011.08.30
Posted by 꿈을모아서

댓글을 달아 주세요