Поделиться через


Макрос CreateWindowW (winuser.h)

Создает перекрывающееся, всплывающее окно или дочернее окно. Он задает класс окна, заголовок окна, стиль окна и (необязательно) начальную позицию и размер окна. Функция также указывает родительский или владелец окна, если таковые есть, и меню окна.

Чтобы использовать расширенные стили окон в дополнение к стилям, поддерживаемым CreateWindow, используйте функцию CreateWindowEx.

Синтаксис

HWND CreateWindowW(
  [in, optional] LPCWSTR   lpClassName,
  [in, optional] LPCWSTR   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

Тип: LPCWSTR

Строка nullили атом класса, созданный предыдущим вызовом функции RegisterClass или RegisterClassEx. Атом должен находиться в слове с низким порядком lpClassName; Слово с высоким порядком должно быть равно нулю. Если lpClassName является строкой, он указывает имя класса окна. Имя класса может быть любым именем, зарегистрированным в RegisterClass или RegisterClassEx, если модуль, регистрирующий класс, также является модулем, создающим окно. Имя класса также может быть любым из предопределенных системных имен классов. Список имен системных классов см. в разделе "Примечания".

[in, optional] lpWindowName

Тип: LPCWSTR

Имя окна. Если стиль окна задает строку заголовка, в строке заголовка отображается название окна, на которое указывает lpWindowName. При использовании CreateWindow для создания элементов управления, таких как кнопки, флажки и статические элементы управления, используйте lpWindowName, чтобы указать текст элемента управления. При создании статического элемента управления с помощью стиля SS_ICON используйте lpWindowName, чтобы указать имя значка или идентификатор. Чтобы указать идентификатор, используйте синтаксис "#число".

[in] dwStyle

Тип: DWORD

Стиль создаваемого окна. Этот параметр может быть сочетанием значений стиля окна , а также стили элементов управления, указанные в разделе "Примечания".

[in] x

Тип: int

Начальная горизонтальная позиция окна. Для перекрывающегося или всплывающего окна параметр x является начальной координатой x верхнего левого угла окна в координатах экрана. Для дочернего окна x — это координата x левого верхнего угла окна относительно левого верхнего угла клиентской области родительского окна. Если для этого параметра задано значение CW_USEDEFAULT, система выбирает позицию по умолчанию для левого верхнего угла окна и игнорирует параметр y. CW_USEDEFAULT допустимо только для перекрывающихся окон; Если оно указано для всплывающего окна или дочернего окна, для параметров x и y задано значение нулю.

[in] y

Тип: int

Начальная вертикальная позиция окна. Для перекрывающегося или всплывающего окна параметр y является начальной координатой y верхнего левого угла окна в координатах экрана. Для дочернего окна y является начальной координатой y левого верхнего угла дочернего окна относительно левого верхнего левого угла клиентской области родительского окна. Для поля списка y является начальной координатой y левого верхнего угла клиентской области списка относительно левого верхнего угла клиентской области окна в верхнем левом углу клиентской области родительского окна.

Если в бите стиля WS_VISIBLE создается перекрывающееся окно, а параметр x имеет значение CW_USEDEFAULT, то параметр y определяет, как отображается окно. Если параметр yCW_USEDEFAULT, диспетчер окон вызывает ShowWindow с флагом SW_SHOW после создания окна. Если параметр y является другим значением, диспетчер окон вызывает ShowWindow с этим значением в качестве параметра nCmdShow.

[in] nWidth

Тип: int

Ширина окна в единицах устройства. Для перекрывающихся окон nWidth — ширина окна, в координатах экрана или CW_USEDEFAULT. Если nWidthCW_USEDEFAULT, система выбирает ширину и высоту по умолчанию для окна; Ширина по умолчанию расширяется от начальной координаты x до правого края экрана, а высота по умолчанию расширяется от начальной координаты y до верхней части области значка. CW_USEDEFAULT допустимо только для перекрывающихся окон; Если CW_USEDEFAULT задано для всплывающего окна или дочернего окна, nWidth и nHeight имеют значение нулю.

[in] nHeight

Тип: int

Высота окна в единицах устройства. Для перекрывающихся окон nHeight — высота окна в координатах экрана. Если nWidth задано значение CW_USEDEFAULT, система игнорирует nHeight.

[in, optional] hWndParent

Тип: HWND

Дескриптор окна родительского или владельца создаваемого окна. Чтобы создать дочернее окно или собственное окно, укажите допустимый дескриптор окна. Этот параметр является необязательным для всплывающих окон.

Чтобы создать окно только для сообщений,, укажите HWND_MESSAGE или дескриптор существующего окна только для сообщений.

[in, optional] hMenu

Тип: HMENU

Дескриптор меню или задает идентификатор дочернего окна в зависимости от стиля окна. Для перекрывающегося или всплывающего окна hMenu определяет меню, которое будет использоваться с окном; Его можно значение NULL, если будет использоваться меню класса. В дочернем окне hMenu указывает идентификатор дочернего окна, целочисленное значение, используемое элементом управления диалогового окна для уведомления родительского элемента управления о событиях. Приложение определяет идентификатор дочернего окна; Он должен быть уникальным для всех дочерних окон с одинаковым родительским окном.

[in, optional] hInstance

Тип: HINSTANCE

Дескриптор экземпляра модуля, связанного с окном.

[in, optional] lpParam

Тип: LPVOID

Указатель на значение, передаваемое в окно через структуру CREATESTRUCT (элемент lpCreateParams), на который указывает lParam парам WM_CREATE сообщения WM_CREATE. Это сообщение отправляется в созданное окно этой функцией перед возвратом.

Если приложение вызывает CreateWindow для создания клиентского окна MDI, lpParam должен указывать на структуру CLIENTCREATESTRUCT. Если окно клиента MDI вызывает CreateWindow для создания дочернего окна MDI, lpParam должен указывать на структуру MDICREATESTRUCT. lpParam может быть NULL, если никаких дополнительных данных не требуется.

Возвращаемое значение

Тип: HWND

Если функция выполнена успешно, возвращаемое значение является дескриптором в новом окне.

Если функция завершается ошибкой, возвращаемое значение равно NULL. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Перед возвратом CreateWindow отправляет WM_CREATE сообщение в процедуру окна. Для перекрывающихся, всплывающих и дочерних окон CreateWindow отправляет WM_CREATE, WM_GETMINMAXINFOи WM_NCCREATE сообщения в окно. Параметр lParam сообщения WM_CREATE содержит указатель на структуру CREATESTRUCT. Если задан стиль WS_VISIBLE, CreateWindow отправляет окно всем сообщениям, необходимым для активации и отображения окна.

Если созданное окно является дочерним окном, его положение по умолчанию находится в нижней части порядка Z. Если созданное окно является окном верхнего уровня, его положение по умолчанию находится в верхней части Z-порядка (но под всеми самыми верхними окнами, если только созданное окно не является самым верхним).

Сведения о том, отображает ли панель задач кнопку для созданного окна, см. в разделе Управление кнопками панели задач.

Сведения об удалении окна см. в функции DestroyWindow.

Следующие предопределенные системные классы можно указать в параметре lpClassName. Обратите внимание на соответствующие стили элементов управления, которые можно использовать в параметре dwStyle.

Системный класс Значение
BUTTON Указывает небольшое прямоугольное дочернее окно, представляющее кнопку, которую пользователь может щелкнуть, чтобы включить или отключить его. Элементы управления кнопками можно использовать отдельно или в группах, и они могут быть помечены или отображаться без текста. Элементы управления кнопкой обычно изменяют внешний вид, когда пользователь щелкает их. Дополнительные сведения см. в разделе Кнопки

Таблица стилей кнопки, которые можно указать в параметре dwStyle, см. стили кнопок.

COMBOBOX Задает элемент управления, состоящий из поля списка и поля выбора, аналогичного элементу управления редактирования. При использовании этого стиля приложение должно всегда отображать поле списка или включить раскрывающийся список. Если поле списка отображается, ввод символов в поле выбора выделяет первую запись списка, которая соответствует типизированным символам. И наоборот, при выборе элемента в поле списка отображается выделенный текст в поле выбора.

Дополнительные сведения см. в разделе Поля со списком. Таблицу стилей полей со списком можно указать в параметре dwStyle, см. стили полей со списком.

EDIT Задает прямоугольное дочернее окно, в которое пользователь может вводить текст с клавиатуры. Пользователь выбирает элемент управления и дает ему фокус клавиатуры, щелкнув его или переместив его, нажав клавишу TAB. Пользователь может вводить текст, когда элемент управления редактирования отображает мигающий курсор; используйте мышь для перемещения курсора, выбора символов для замены или размещения курсора для вставки символов; или используйте ключ BACKSPACE для удаления символов. Дополнительные сведения см. в разделе Изменение элементов управления.

Таблица стилей элементов управления редактирования, которые можно указать в параметре dwStyle, см. стилей элементов управления.

LISTBOX Задает список символьных строк. Укажите этот элемент управления всякий раз, когда приложение должно представлять список имен, таких как имена файлов, из которых пользователь может выбрать. Пользователь может выбрать строку, щелкнув ее. Выделена выбранная строка, и сообщение уведомления передается родительскому окну. Дополнительные сведения см. в списков.

Таблица стилей списков, которые можно указать в параметре dwStyle, см. в разделе стили списков.

MDICLIENT Указывает окно клиента MDI. Это окно получает сообщения, управляющие дочерними окнами приложения MDI. Рекомендуемые биты стиля — WS_CLIPCHILDREN и WS_CHILD. Укажите стили WS_HSCROLL и WS_VSCROLL, чтобы создать окно клиента MDI, позволяющее пользователю прокручивать дочерние окна MDI в представление.

Дополнительные сведения см. в интерфейса нескольких документов.

RichEdit Задает элемент управления Microsoft Rich Edit 1.0. Это окно позволяет пользователю просматривать и изменять текст с помощью форматирования символов и абзаца и включать внедренные объекты объектной модели компонентов (COM). Дополнительные сведения см. в разделе Расширенные элементы управления редактированием.

Таблица стилей элементов управления расширенными изменениями, которые можно указать в параметре dwStyle, см. стили элементов управления rich Edit Control.

RICHEDIT_CLASS Задает элемент управления Microsoft Rich Edit 2.0. Эти элементы управления позволяют пользователю просматривать и редактировать текст с помощью форматирования символов и абзаца и включать внедренные COM-объекты. Дополнительные сведения см. в разделе Расширенные элементы управления редактированием.

Таблица стилей элементов управления расширенными изменениями, которые можно указать в параметре dwStyle, см. стили элементов управления rich Edit Control.

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 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)

См. также

о интерфейса нескольких документов

общие классы окон управления

концептуальные

CreateWindowEx

DestroyWindow

EnableWindow

другие ресурсы

Справочник

RegisterClass

RegisterClassEx

ShowWindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows