다음을 통해 공유


CreateWindowA 매크로(winuser.h)

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

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

통사론

HWND CreateWindowA(
  [in, optional] LPCSTR    lpClassName,
  [in, optional] LPCSTR    lpWindowName,
  [in]           DWORD     dwStyle,
  [in]           int       x,
  [in]           int       y,
  [in]           int       nWidth,
  [in]           int       nHeight,
  [in, optional] HWND      hWndParent,
  [in, optional] HMENU     hMenu,
  [in, optional] HINSTANCE hInstance,
  [in, optional] LPVOID    lpParam
);

매개 변수

[in, optional] lpClassName

형식: LPCSTR

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

[in, optional] lpWindowName

형식: LPCSTR

창 이름입니다. 창 스타일에서 제목 표시줄을 지정하면 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 매개 변수가 다른 값인 경우 창 관리자는 해당 값이 있는 ShowWindownCmdShow 매개 변수로 호출합니다.

[in] nWidth

형식: int

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

창과 연결할 모듈 인스턴스에 대한 핸들입니다.

[in, optional] lpParam

형식: LPVOID

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

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

반환 값

형식: 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(구성 요소 개체 모델) 개체를 포함할 수 있습니다. 자세한 내용은 서식 있는 편집 컨트롤참조하세요.

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

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

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

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

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