2009년 11월 7일 토요일

CreateWindow 함수

CreateWindow함수는 오버랩드, 팝업, 차일드 윈도우를 생성한다. 지정한 윈도우 클래스, 윈도우 타이틀, 윈도우 스타일, 그리고 윈도우의 초기위치와 크기를 지정한다( 위치와 크기는 옵션입니다. 그렇게 해도되고 안해도 상관없는.. ). 그리고 생성할 윈도우의 parent(부모)나 owner(부모가 없는 메인윈도우)를 지정하고 또한 윈도우의 메뉴도 지정한다.
CreateWindow가 지원하는 스타일에 확장 윈도우 스타일을 추가하려면 CreateWindowEx 함수를 사용한다.

 

 

Syntax : 구조

HWND CreateWindow

( LPCTSTR lpClassName,
  LPCTSTR lpWindowName,
  DWORD dwStyle,
  int x,
  int y,
  int nWidth,
  int nHeight,
  HWND hWndParent,
  HMENU hMenu,
  HINSTANCE hInstance,
  LPVOID lpParam
);

Parameters( 매개변수, 인자, 파라미터 )

 

 

lpClassName
[입력용변수] NULL로 끝나는 문자열이나 이전의 RegisterClass 또는 RegisterClassEx로 인해 생성된 atom클래스의 포인터.
( 잠깐 atom에 대해서 설명드리자면 시스템이 유지하는 문자테이블을 뜻합니다. 이에대한 자세한 자료는 관련정보를 찾아보세요.. 여기서 설명드리기엔 너무 길어질것 같으니.. 그리고 대게 여기 매개변수에는 "string" 이런식으로 지정하는게 대부분이므로 atom에 대한 해석은 제외하겠습니다 )
만일 lpClassName이 문자열이면, 그것을 윈도우 클래스 이름으로 지정한다. 클래스 이름엔 RegisterClass 나 RegisterClassEx 함수로 registered(등록된)된 이름이 가능하며, 등록된 모듈 클래스는 대게 윈도우를 생성하는 모듈을 지원한다. 그 클래스 이름은 시스템 클래스 이름들에 이미 정의되어 있다. 시스템 클래스 이름들의 리스트를 살펴보려면 Remarks section 을 참고하라.

 

lpWindowName
[입력용변수] 윈도우 이름을 지정하는 NULL로 끝나는 문자열 포인터. 만일 윈도우 스타일에 타이틀바를 지정했을경우, lpWindowName가 윈도우 타이틀바에 표시된다. 컨트롤, 버턴들, 체크박스들, 스타틱컨트롤들을 CreateWindow로 생성할때 lpWindowName은 컨트롤의 텍스트로 지정된다. SS_ICON스타일로 스타틱 컨트롤을 생성했을땐 lpWindowName은 아이콘 이름이나 식별자로 사용된다. 식별자를 명시하려면 "#num" 구조를 사용한다.

 

dwStyle
[입력용변수] 생성될 윈도우의 스타일을 지정. 이 파라미터(매개변수)는 Remark 섹션에서 설명하는 윈도우 스타일들, 컨트롤 스타일들과 함께 사용된다.

 

x
[입력용변수] 윈도우의 초기 수평위치를 지정. 오버랩드(overlapped)나 팝업(pop-up)윈도우는, x파라미터가 화면 좌표의 윈도우의 상단-왼쪽 코너의 초기 x-좌표를 의미한다. 차일드 윈도우는 x는 부모 윈도우의 client영역(작업영역)의 상대적인 상단-왼쪽 코너를 뜻한다. 이 파라미터를 CW_USEDEFAULT로 설정하면, y파라미터를 무시하고 시스템이 윈도우의 상단-왼쪽 코너를 기본값으로 지정한다. CW_USEDEFAULT는 오버랩드 윈도우들에게만 적용되며 만일 팝업, 차일드 윈도우에 지정을 하면 x와 y파라미터는 0 으로 설정된다.

 

y
[입력용변수] 윈도우의 초기 수직위치를 지정. 오버랩드나 팝업윈도우는 y파라미터가 화면좌표의 윈도우 상단-왼쪽코너 초기y-좌표를 의미하고, 차일드 윈도우의 y는 부모윈도우의 client영역의 상대적인 상단-왼쪽 코너 초기 y-좌표를 뜻한다.
리스트박스의 y는 부모윈도우의 작업역역으로부터 리스트박스 작업영역의 상단-왼쪽 코너 초기 y-좌표가 된다. 만일 오버랩드 윈도우에 WS_VISIBLE 스타일을 bit set(설정)하고 x 파라미터를 CW_USEDEFALUT로 설정했다면, 시스템은 y파라미터를 무시한다.

 

nWidth
[입력용변수] 윈도우의 가로너비를 지정. 오버랩드 윈도우에선 nWidth는 화면좌표, 또는 CW_USEDEFAULT를 지정한다. CW_USEDEFAULT를 지정하면, 시스템이 알아서 윈도우의 너비와 높이를 지정한다. 만일 팝업 또는 차일드 윈도우에 이 플래그가 지정되면 nWidth와 nHeight는 0으로 설정된다.

 

nHeight
[입력용변수] 윈도우의 높이를 지정. 오버랩드 윈도우에선 nHeight는 윈도우의 화면좌표의 높이를 지정한다. 만일 nWidth가 CW_USEDEFAULT로 설정되었다면 시스템은 이 값을 무시한다.

 

hWndParent
[입력용변수] 생성할 윈도우의 부모 또는 소유자 윈도우핸들. 차일드나 소유된 윈도우를 생성하려면 올바른 윈도우 핸들의 정보를 준다. 이 파라미터는 팝업윈도우에도 적용된다.
Windows 2000/XP : message-only윈도우를 생성하기 위해, HWND_MESSAGE 플래그나 현재 실행중인 message-only 윈도우의 핸들의 정보를 준다.(참고로 message-only윈도우란 보이지는 않고 메시지만 받기 위한 용도로 2000부터 지원되는 윈도우 입니다 )

 

hMenu
[입력용변수]메뉴의 핸들이나, 윈도우 스타일에 의존적인 차일드 윈도우 식별자를 명시한다. 오버랩드나 팝업윈도우의 hMenu는 윈도우에 사용될 수 있는 메뉴인지 확인한다(윈도우 클래스의 메뉴가 NULL이 사용되었는지 확인한다는 뜻). 차일드 윈도우의 hMenu는 차일드-윈도우 식별자를 명시하며, 부모윈도우에게 통지메시지를 보낼 다이얼로그박스컨트롤의 정수값을 명시한다. 응용프로그램은 차일드-윈도우의 식별자를 검사한다( 같은 부모윈도우에 대한 유한 차일드 윈도우 식별자인지 ).

 

hInstance
[입력용변수] Windows 98/98/Me : 결합될 윈도우 모듈의 인스턴스 핸들.
Windows NT/2000/XP : 이 값은 무시됨.

 

lpParam
[입력용변수] lpParam 파라미터에 CREATESTRUCT 구조체를 담아 윈도우의 WM_CREATE메시지로 전달하기위한 값의 포인터. 만일 multiple-document interface( MDI ) 클라이언트 윈도우를 CreateWindow로 생성할땐, lpParam엔 CLIENTCREATESTRUCT 구조체의 포인터를 넣는다. 

댓글 없음:

댓글 쓰기