CreateWindowA 매크로(winuser.h)

겹치는, 팝업 또는 자식 창을 만듭니다. 창 클래스, 창 제목, 창 스타일 및 창의 초기 위치 및 크기(선택 사항)를 지정합니다. 또한 함수는 창의 부모 또는 소유자(있는 경우)와 창의 메뉴를 지정합니다.

CreateWindow에서 지원하는 스타일 외에도 확장 창 스타일을 사용하려면 CreateWindowEx 함수를 사용합니다.

구문

HWND CreateWindowA(
  [in, optional]  lpClassName,
  [in, optional]  lpWindowName,
  [in]            dwStyle,
  [in]            x,
  [in]            y,
  [in]            nWidth,
  [in]            nHeight,
  [in, optional]  hWndParent,
  [in, optional]  hMenu,
  [in, optional]  hInstance,
  [in, optional]  lpParam
);

매개 변수

[in, optional] lpClassName

형식: LPCTSTR

Null로 끝나는 문자열 또는 RegisterClass 또는 RegisterClassEx 함수에 대한 이전 호출에서 만든 클래스 원자 입니다. 원자는 lpClassName의 낮은 순서 단어에 있어야 합니다. 상위 단어는 0이어야 합니다. lpClassName이 문자열인 경우 창 클래스 이름을 지정합니다. 클래스를 등록하는 모듈이 창을 만드는 모듈이기도 한 경우 클래스 이름은 RegisterClass 또는 RegisterClassEx에 등록된 이름일 수 있습니다. 클래스 이름은 미리 정의된 시스템 클래스 이름일 수도 있습니다. 시스템 클래스 이름 목록은 설명 섹션을 참조하세요.

[in, optional] lpWindowName

형식: LPCTSTR

창 이름입니다. 창 스타일이 제목 표시줄을 지정하면 lpWindowName 이 가리키는 창 제목이 제목 표시줄에 표시됩니다. CreateWindow를 사용하여 단추, 검사 상자 및 정적 컨트롤과 같은 컨트롤을 만드는 경우 lpWindowName을 사용하여 컨트롤의 텍스트를 지정합니다. SS_ICON 스타일로 정적 컨트롤을 만들 때는 lpWindowName을 사용하여 아이콘 이름 또는 식별자를 지정합니다. 식별자를 지정하려면 "#num" 구문을 사용합니다.

[in] dwStyle

형식:DWORD

생성되는 창의 스타일입니다. 이 매개 변수는 창 스타일 값과 주의 섹션에 표시된 컨트롤 스타일의 조합일 수 있습니다.

[in] x

형식: int

창의 초기 가로 위치입니다. 겹치거나 팝업 창의 경우 x 매개 변수는 화면 좌표에서 창의 왼쪽 위 모서리에 있는 초기 x 좌표입니다. 자식 창의 경우 x 는 부모 창의 클라이언트 영역의 왼쪽 위 모서리를 기준으로 창의 왼쪽 위 모서리에 대한 x 좌표입니다. 이 매개 변수가 CW_USEDEFAULT 설정된 경우 시스템은 창의 왼쪽 위 모서리에 대한 기본 위치를 선택하고 y 매개 변수를 무시합니다. CW_USEDEFAULT 겹치는 창에만 유효합니다. 팝업 또는 자식 창에 지정되면 xy 매개 변수가 0으로 설정됩니다.

[in] y

형식: int

창의 초기 세로 위치입니다. 겹치거나 팝업 창의 경우 y 매개 변수는 화면 좌표에서 창 왼쪽 위 모서리의 초기 y 좌표입니다. 자식 창의 경우 y 는 부모 창의 클라이언트 영역의 왼쪽 위 모서리를 기준으로 자식 창의 왼쪽 위 모서리에 대한 초기 y 좌표입니다. 목록 상자의 경우 y 는 부모 창 클라이언트 영역의 왼쪽 위 모서리를 기준으로 목록 상자 클라이언트 영역의 왼쪽 위 모서리에 대한 초기 y 좌표입니다.

겹치는 창이 WS_VISIBLE 스타일 비트 집합으로 만들어지고 x 매개 변수가 CW_USEDEFAULT 설정된 경우 y 매개 변수는 창이 표시되는 방식을 결정합니다. y 매개 변수가 CW_USEDEFAULT 경우 창 관리자가 창을 만든 후 SW_SHOW 플래그를 사용하여 ShowWindow를 호출합니다. y 매개 변수가 다른 값이면 창 관리자는 해당 값을 nCmdShow 매개 변수로 사용하여 ShowWindow를 호출합니다.

[in] nWidth

형식: int

창의 너비(디바이스 단위)입니다. 겹치는 창의 경우 nWidth 는 창의 너비, 화면 좌표 또는 CW_USEDEFAULT. nWidthCW_USEDEFAULT 경우 시스템은 창의 기본 너비와 높이를 선택합니다. 기본 너비는 초기 x 좌표에서 화면의 오른쪽 가장자리까지 확장되며 기본 높이는 초기 y 좌표에서 아이콘 영역의 맨 위로 확장됩니다. CW_USEDEFAULT 겹치는 창에만 유효합니다. 팝업 또는 자식 창에 대해 CW_USEDEFAULT 지정하면 nWidthnHeight 가 0으로 설정됩니다.

[in] nHeight

형식: int

창의 높이(디바이스 단위)입니다. 겹치는 창의 경우 nHeight 는 화면 좌표의 창 높이입니다. nWidthCW_USEDEFAULT 설정되면 시스템은 nHeight를 무시합니다.

[in, optional] hWndParent

형식: HWND

생성되는 창의 부모 또는 소유자 창에 대한 핸들입니다. 자식 창 또는 소유 창을 만들려면 유효한 창 핸들을 제공합니다. 이 매개 변수는 팝업 창에 선택 사항입니다.

메시지 전용 창을 만들려면 기존 메시지 전용 창HWND_MESSAGE 또는 핸들을 제공합니다.

[in, optional] hMenu

형식: HMENU

메뉴에 대한 핸들이거나 창 스타일에 따라 자식 창 식별자를 지정합니다. 겹치거나 팝업 창의 경우 hMenu 는 창에 사용할 메뉴를 식별합니다. 클래스 메뉴를 사용할 경우 NULL 일 수 있습니다. 자식 창의 경우 hMenu 는 대화 상자 컨트롤에서 부모에게 이벤트에 대해 알리는 데 사용하는 정수 값인 자식 창 식별자를 지정합니다. 애플리케이션은 자식 창 식별자를 결정합니다. 부모 창이 동일한 모든 자식 창에 대해 고유해야 합니다.

[in, optional] hInstance

형식: HINSTANCE

창과 연결할 모듈의 instance 대한 핸들입니다.

[in, optional] lpParam

형식: LPVOID

WM_CREATE 메시지의lParam 매개 변수가 가리키는 CREATESTRUCT 구조체(lpCreateParams 멤버)를 통해 창에 전달할 값에 대한 포인터입니다. 이 메시지는 이 함수가 반환하기 전에 만든 창으로 전송됩니다.

애플리케이션이 CreateWindow 를 호출하여 MDI 클라이언트 창을 만드는 경우 lpParamCLIENTCREATESTRUCT 구조를 가리킵니다. MDI 클라이언트 창이 CreateWindow 를 호출하여 MDI 자식 창을 만드는 경우 lpParamMDICREATESTRUCT 구조를 가리킵니다. 추가 데이터가 필요하지 않은 경우 lpParamNULL일 수 있습니다.

반환

형식: HWND

함수가 성공하면 반환 값은 새 창에 대한 핸들입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

반환 값

없음

설명

반환하기 전에 CreateWindow 는 창 프로시저에 WM_CREATE 메시지를 보냅니다. 겹치는 팝업 및 자식 창의 경우 CreateWindowWM_CREATE, WM_GETMINMAXINFOWM_NCCREATE 메시지를 창으로 보냅니다. WM_CREATE 메시지의 lParam 매개 변수에는 CREATESTRUCT 구조체에 대한 포인터가 포함되어 있습니다. WS_VISIBLE 스타일을 지정하면 CreateWindow는 창을 활성화하고 표시하는 데 필요한 모든 메시지를 창에 보냅니다.

만든 창이 자식 창인 경우 기본 위치는 Z 순서의 맨 아래에 있습니다. 만든 창이 최상위 창인 경우 기본 위치는 Z 순서의 맨 위에 있지만 생성된 창 자체가 맨 위에 있지 않으면 맨 위 창 아래에 있습니다.

작업 표시줄에 만든 창의 단추가 표시되는지 여부를 제어하는 방법에 대한 자세한 내용은 작업 표시줄 단추 관리를 참조하세요.

창을 제거하는 방법에 대한 자세한 내용은 DestroyWindow 함수를 참조하세요.

lpClassName 매개 변수에 다음과 같은 미리 정의된 시스템 클래스를 지정할 수 있습니다. dwStyle 매개 변수에서 사용할 수 있는 해당 컨트롤 스타일을 확인합니다.

시스템 클래스 의미
단추 사용자가 클릭하여 켜거나 끌 수 있는 단추를 나타내는 작은 사각형 자식 창을 지정합니다. 단추 컨트롤은 단독으로 또는 그룹에서 사용할 수 있으며 텍스트 없이 레이블을 지정하거나 표시할 수 있습니다. 단추 컨트롤은 일반적으로 사용자가 클릭할 때 모양을 변경합니다. 자세한 내용은 단추를 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 단추 스타일의 테이블은 단추 스타일을 참조하세요.

Combobox 목록 상자와 편집 컨트롤과 유사한 선택 필드로 구성된 컨트롤을 지정합니다. 이 스타일을 사용하는 경우 애플리케이션은 항상 목록 상자를 표시하거나 드롭다운 목록 상자를 사용하도록 설정해야 합니다. 목록 상자가 표시되면 선택 필드에 문자를 입력하면 입력한 문자와 일치하는 첫 번째 목록 상자 항목이 강조 표시됩니다. 반대로 목록 상자에서 항목을 선택하면 선택한 텍스트가 선택 필드에 표시됩니다.

자세한 내용은 콤보 상자를 참조하세요. dwStyle 매개 변수에서 지정할 수 있는 콤보 상자 스타일의 테이블은 콤보 상자 스타일을 참조하세요.

편집 사용자가 키보드에서 텍스트를 입력할 수 있는 사각형 자식 창을 지정합니다. 사용자는 컨트롤을 선택하고 TAB 키를 눌러 컨트롤을 클릭하거나 키보드 포커스를 이동하여 키보드 포커스를 제공합니다. 편집 컨트롤에 깜박이는 캐럿이 표시되면 사용자가 텍스트를 입력할 수 있습니다. 마우스를 사용하여 커서를 이동하거나, 바꿀 문자를 선택하거나, 문자를 삽입하기 위해 커서를 배치합니다. 또는 BACKSPACE 키를 사용하여 문자를 삭제합니다. 자세한 내용은 컨트롤 편집을 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 편집 컨트롤 스타일의 테이블은 컨트롤 스타일 편집을 참조하세요.

Listbox 문자열 목록을 지정합니다. 애플리케이션에서 사용자가 선택할 수 있는 파일 이름과 같은 이름 목록을 표시해야 할 때마다 이 컨트롤을 지정합니다. 사용자는 문자열을 클릭하여 선택할 수 있습니다. 선택한 문자열이 강조 표시되고 알림 메시지가 부모 창에 전달됩니다. 자세한 내용은 목록 상자를 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 목록 상자 스타일의 테이블은 목록 상자 스타일을 참조하세요.

MDICLIENT MDI 클라이언트 창을 지정합니다. 이 창은 MDI 애플리케이션의 자식 창을 제어하는 메시지를 받습니다. 권장되는 스타일 비트는 WS_CLIPCHILDRENWS_CHILD. WS_HSCROLLWS_VSCROLL 스타일을 지정하여 사용자가 MDI 자식 창을 보기로 스크롤할 수 있는 MDI 클라이언트 창을 만듭니다.

자세한 내용은 여러 문서 인터페이스를 참조하세요.

Richedit Microsoft Rich Edit 1.0 컨트롤을 지정합니다. 이 창을 사용하면 사용자가 문자 및 단락 서식을 사용하여 텍스트를 보고 편집할 수 있으며 포함된 COM(구성 요소 개체 모델) 개체를 포함할 수 있습니다. 자세한 내용은 Rich Edit 컨트롤을 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 서식 있는 편집 컨트롤 스타일의 테이블은 서식 있는 편집 컨트롤 스타일을 참조하세요.

RICHEDIT_CLASS Microsoft Rich Edit 2.0 컨트롤을 지정합니다. 이 컨트롤을 사용하면 사용자가 문자 및 단락 서식을 사용하여 텍스트를 보고 편집할 수 있으며 포함된 COM 개체를 포함할 수 있습니다. 자세한 내용은 Rich Edit 컨트롤을 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 서식 있는 편집 컨트롤 스타일의 테이블은 서식 있는 편집 컨트롤 스타일을 참조하세요.

Scrollbar 스크롤 상자가 있고 양쪽 끝에 방향 화살표가 있는 사각형을 지정합니다. 스크롤 막대는 사용자가 컨트롤을 클릭할 때마다 부모 창에 알림 메시지를 보냅니다. 부모 창은 필요한 경우 스크롤 상자의 위치를 업데이트합니다. 자세한 내용은 스크롤 막대를 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 스크롤 막대 컨트롤 스타일의 테이블은 스크롤 막대 컨트롤 스타일을 참조하세요.

정적 레이블 지정, 상자 또는 다른 컨트롤을 구분하는 데 사용되는 간단한 텍스트 필드, 상자 또는 사각형을 지정합니다. 정적 컨트롤은 입력을 사용하지 않고 출력을 제공하지 않습니다. 자세한 내용은 정적 컨트롤을 참조하세요.

dwStyle 매개 변수에서 지정할 수 있는 정적 컨트롤 스타일의 테이블은 정적 컨트롤 스타일을 참조하세요.

 

CreateWindow 는 아래와 같이 CreateWindowEx 함수에 대한 호출로 구현됩니다.

#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif

예제

예제는 창 클래스 사용을 참조하세요.

참고

winuser.h 헤더는 CREATEWindow를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)

추가 정보

여러 문서 인터페이스 정보

공용 컨트롤 창 클래스

개념

CreateWindowEx

DestroyWindow

EnableWindow

기타 리소스

참조

Registerclass

RegisterClassEx

Showwindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows