Макрос 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; Слово высокого порядка должно быть равно нулю. Если 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 допустимо только для перекрывающихся окон; Если он указан для всплывающего или дочернего окна, параметры x и y задаются равным нулю.

[in] y

Тип: int

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

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

[in] nWidth

Тип: int

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

[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 ), на который указывает параметр lParamWM_CREATE сообщения. Это сообщение отправляется в созданное окно этой функцией перед возвратом.

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

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

Тип: HWND

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

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

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

None

Remarks

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

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

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ Обозначает прямоугольное дочернее окно, в которое пользователь может вводить текст с клавиатуры. Пользователь выбирает элемент управления и передает ему фокус клавиатуры, щелкнув его или перейдя к нему, нажав клавишу 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. Дополнительные сведения см. в разделе Rich Edit Controls.

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

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

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

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
Header winuser.h (включая Windows.h)

См. также раздел

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

Классы общих окон элементов управления

Основные понятия

CreateWindowEx

Destroywindow

EnableWindow

Другие ресурсы

Справочные материалы

RegisterClass

RegisterClassEx

Showwindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows