Функция CreateWindowEx

Функция CreateWindowEx создает перекрывающее, выпрыгивающее или дочернее окно с расширенным стилем; иначе, эта функция идентична функции CreateWindow. Для получения дополнительной информации о создании окна и полное описание других параметров функции CreateWindowEx, см. статью CreateWindow.

Синтаксис

HWND CreateWindowEx(

DWORD dwExStyle,      // улучшенный стиль окна
LPCTSTR
lpClassName,  // указатель на зарегистрированное имя класса
LPCTSTR
lpWindowName, // указатель на имя окна
DWORD
dwStyle,        // стиль окна
int
x,                // горизонтальная позиция окна
int
y,                // вертикальная позиция окна
int
nWidth,           // ширина окна
int
nHeight,          // высота окна
HWND
hWndParent,      // дескриптор родительского или окна владельца
HMENU
hMenu,          // дескриптор меню или ID дочернего окна
HINSTANCE
hInstance,  // дескриптор экземпляра прикладной программы
LPVOID
lpParam        // указатель на данные создания окна

);

Параметры

dwExStyle

[in] Определяет расширенный стиль создаваемого окна. Этот параметр может состоять из одного или нескольких значений следующих ниже:

 

Стиль

Предназначение

WS_EX_ACCEPTFILES

Определяет, что окно, созданное с этим стилем принимает файлы, перемещаемые при помощи информационной технологии "перетащи и вставь". 

WS_EX_APPWINDOW

Активизирует окно верхнего уровня на панели задач, когда оно видимое. 

WS_EX_CLIENTEDGE

Определяет, что окно имеет рамку с притопленным краем. 

WS_EX_COMPOSITED

Windows XP: Рисует всех потомков по порядку снизу вверх, используя двойную буферизацию. Для получения дополнительной информации, см. Замечания. Этот стиль не может быть использован, если окно имеет стиль класса или установленные флажки стиля CS_OWNDC или CS_CLASSDC. 

WS_EX_CONTEXTHELP

Включает вопросительный знак в строку заголовка окна. Когда пользователь щелкает мышью по вопросительному знаку, курсор меняется на вопросительный знак с указателем. Если пользователь затем щелкает мышью по дочернему окну, потомок принимает сообщение WM_HELP. Дочернее окно должно передать сообщение родительской оконной процедуре, которая должна вызвать функцию WinHelp, используя команду HELP_WM_HELP. Прикладная программа Справки показывает выскакивающее окно, которое обычно содержит справку для дочернего окна.

Стиль WS_EX_CONTEXTHELP не может использоваться со стилями WS_MAXIMIZEBOX или WS_MINIMIZEBOX. 

WS_EX_CONTROLPARENT

Окно в себе содержит дочерние окна, которые должны принять участие в навигации по диалоговому окну. Если этот стиль определен, диспетчер диалогового окна заново вынуждает действовать внутри дочерних окон этого окна при выполнении навигационных операций типа обработки клавиши TAB, клавиши со стрелкой или ускорителей клавиатуры. 

WS_EX_DLGMODALFRAME

Создает окно, которое имеет двойную рамку; окно может быть создано (необязательно) с областью заголовка, которую определяет стиль WS_CAPTION в параметре dwStyle. 

WS_EX_LAYERED

Windows 2000/XP: Создает многослойное окно. 

Обратите внимание! что этот стиль не может быть использован для дочерних окон. Также он не может быть использован, если окно имеет стиль класса или установленные флажки стиля CS_OWNDC или CS_CLASSDC. 

WS_EX_LAYOUTRTL

Арабская и Еврейская версии Windows 98/Me, Windows 2000/XP: Создает окно, начало горизонтальной координаты которого, находится на правом крае. Увеличение горизонтальных значений продвигает курсор влево. 

WS_EX_LEFT

Создает окно, которое имеет свойство "выравнивания по левой границе". Это - по умолчанию. 

WS_EX_LEFTSCROLLBAR

Если язык оболочки Еврейский, Арабский или другой язык, который придерживается иного порядка чтения, вертикальная линейка прокрутки (если дается) находится слева от рабочей области. Для других языков, этот стиль игнорируется.

WS_EX_LTRREADING

Текст окна отображается, используя свойство порядка чтения слева направо. Это - по умолчанию. 

WS_EX_MDICHILD

Создает MDI дочернее окно. 

WS_EX_NOACTIVATE

Windows 2000/XP: окно верхнего уровня, созданное с этим стилем не становится приоритетным окном, когда пользователь щелкает кнопкой мыши по нему. Система не переводит это окно в активный режим, когда пользователь свертывает или закрывает приоритетное окно.

Чтобы активизировать окно, используйте функцию SetActiveWindow или SetForegroundWindow.

Окно по умолчанию не появляется на панели задач. Чтобы заставить окно появляться на панели задач, используйте стиль WS_EX_APPWINDOW. 

WS_EX_NOINHERITLAYOUT

Windows 2000/XP: окно, созданное с этим стилем не передает свою компоновку своим дочерним окнам. 

WS_EX_NOPARENTNOTIFY

Определяет, что дочернее окно, созданное с этим стилем не отправляет сообщение WM_PARENTNOTIFY своему родительскому окну, когда оно создается или разрушается. 

WS_EX_OVERLAPPEDWINDOW

Комбинация стилей WS_EX_CLIENTEDGE и WS_EX_WINDOWEDGE. 

WS_EX_PALETTEWINDOW

Комбинация стилей WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW и WS_EX_TOPMOST. 

WS_EX_RIGHT

Окно имеет свойство "выравнивания по правому краю". Оно зависит от класса окна. Этот стиль имеет действие только тогда, если язык оболочек Еврейский, Арабский или другой язык, который поддерживает иной порядок выравнивания для чтения; иначе, стиль игнорируется.

Использование стиля WS_EX_RIGHT для статических органов управления или полей редактирования текста имеет то же самый результат, как и использование стиля SS_RIGHT или ES_RIGHT, соответственно. Использование этого стиля для командных кнопок имеет то же самое действие, как и использование стилей BS_RIGHT и BS_RIGHTBUTTON. 

WS_EX_RIGHTSCROLLBAR

Вертикальная линейка прокрутки (если предоставляется) появляется справа от рабочей области. Это - по умолчанию. 

WS_EX_RTLREADING

Если язык оболочки Еврейский, Арабский или другой язык, который придерживается иного порядка выравнивания для чтения, текст в окне отображается, используя порядок чтения справа - налево. Для других языков этот стиль игнорируется. 

WS_EX_STATICEDGE

Создает окно с трехмерным стилем рамки, который предполагается использовать для элементов, которые не принимают вводимую информацию от пользователя. 

WS_EX_TOOLWINDOW

Создает окно инструментальных средств; то есть окно предполагается использовать как плавающую инструментальную панель. Окно инструментальных средств имеет область заголовка, которая короче, чем нормальная строка заголовка, а заголовок окна выводится, с использованием меньшего шрифта. Окно инструментальных средств не появляется в панели задач или в диалоговом окне, которое появляется тогда, когда пользователь нажимает ALT+TAB. Если окно инструментальных средств имеет системное меню, его пиктограмма не отображается в заголовке. Однако, Вы можете показывать на экране системное меню, щелкая правой кнопкой мыши или, вводя с клавиатуры ALT+SPACE

WS_EX_TOPMOST

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

WS_EX_TRANSPARENT

Определяет, что окно, созданное с этим стилем не должно изображаться до тех пор, пока родственные окна уровнем ниже (которые были созданы тем же самым потоком) не будут изображены. Вид окна прозрачный, потому, что биты основных сестринских окон уже были окрашены.

Чтобы достигнуть прозрачности без этих ограничений, используйте функцию SetWindowRgn. 

WS_EX_WINDOWEDGE

Определяет, что окно имеет рамку с выпуклым краем.

lpClassName

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

lpWindowName

[in] Указатель на строку, с символом нуля в конце, которая устанавливает имя окна. Если стиль окна определяет область заголовка, заголовок окна, указанный параметром lpWindowName отображается в заголовке. Когда функция CreateWindow используется, чтобы создать органы управления, типа кнопок, переключателей и статические элементов управления, параметр lpWindowName используют, чтобы задать текст в элементе управления. При создании статического элемента управления со стилем SS_ICON, используйте lpWindowName, чтобы установить имя пиктограммы или идентификатора. Чтобы задать идентификатор, используйте синтаксис "#num".

dwStyle

[in] Определяет стиль создаваемого окна. Этот параметр может быть комбинацией стилей окна, плюс стили органов управления, указанных в разделе Замечаний.

x

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

y

[in] Определяет начальную вертикальную позицию окна. Для перекрывающего или выскакивающего окна, параметр y - начальная y-координата левого верхнего угла окна, в экранных координатах устройства. Для дочернего окна, y - начальная y-координата левого верхнего угла дочернего окна относительно левого верхнего угла рабочей области родительского окна. Для окна со списком, y - начальная y-координата левого верхнего угла рабочей области окна со списком относительно левого верхнего угла рабочей области родительского окна. Если перекрывающее окно создано с установленным битом стиля WS_VISIBLE, а параметр x установлен как CW_USEDEFAULT, система игнорирует параметр y.

nWidth

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

nHeight

[in] Определяет высоту окна в единицах измерения устройства. Для перекрывающих окон, nHeight - высота окна в экранной системе координат. Если параметр nWidth установлен как CW_USEDEFAULT, Windows игнорирует nHeight.

hWndParent

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

Windows 2000/XP: Чтобы создать окно только для сообщения, определите ему флажок HWND_MESSAGE или дескриптор существующего окна только для сообщения.

hMenu

[in] Дескриптор меню или, в зависимости от стиля окна, определяет идентификатор дочернего окна. Для перекрывающего или выскакивающего окна, hMenu идентифицирует меню, которое будет использоваться окном; этот параметр может быть значением ПУСТО (NULL), если будет использовано меню класса. Для дочернего окна, hMenu определяет идентификатор дочернего окна, целочисленное значение, используемое элементом управления диалогового окна, чтобы предупреждать родителя о событиях. Прикладная программа определяет идентификатор дочернего окна; он должно быть уникальным для всех дочерних окон того же самого родительского окна.

hInstance

[in] Windows 95/98/Me: Дескриптор экземпляра модуля, который будет связан с окном.

Windows NT /2000/XP: Это значение игнорируется.

lpParam

[in] Указатель на значение, переданное окну через структуру CREATESTRUCT, вызванную параметром lParam сообщения WM_CREATE. Если прикладная программа вызвала функцию CreateWindow, чтобы создать пользовательское окно MDI, lpParam должен указывать на структуру CLIENTCREATESTRUCT.

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

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

Если функция завершилась ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительную информацию об ошибке, вызовите функцию GetLastError.

Эта функция обычно завершается ошибкой по одной из ниже перечисленных причин:

Замечания

Функция CreateWindowEx отправляет создаваемому окну сообщения WM_NCCREATE, WM_NCCALCSIZE и WM_CREATE.

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

За информацией об управлении показом кнопки для созданного окна на Панели задач, обратитесь к статье Видимость кнопок Панели задач.

Следующие предопределенные классы органов управления могут быть определены в параметре lpClassName.

Обратите внимание!, что соответствующие стили органов управления Вы можете использовать в параметре dwStyle.

Класс

Предназначение

BUTTON

(КНОПКА)

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

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

COMBOBOX

(КОМБИНИРОВАННОЕ ОКНО)

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

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

Для получения дополнительной информации, см. статью Комбинированные блоки.

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

EDIT

(ОКНО РЕДАКТИРОВАНИЯ ТЕКСТА)

Обозначает прямоугольное дочернее окно, внутри которого пользователь может напечатать с клавиатуры текст. Пользователь выбирает орган управления и дает ему фокус клавиатуры, щелкая по нему мышью или перемещая в него, каретку путем нажатия клавиши ТАБУЛЯЦИИ (TAB). Пользователь может вводить текст, когда окно редактирования текста отображает мигающую каретку (caret); используйте мышь, чтобы перемещать курсор, выбирать символы для замены или устанавливать курсор в позицию вставки символов; или используйте клавишу для удаления символов. За большей информацией обратитесь к статье Органы управления редактирования текста.

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

LISTBOX

(ОКНО СО СПИСКОМ)

Обозначает список строк символов. Этот орган управления определяется всякий раз, когда прикладная программа должна представить список наименований, такой как имена файлов, из которых пользователь может выбирать. Пользователь может выбрать строку, щелкая мышью по ней. Выбранная строка выделяется, а предупреждающее сообщение передается в родительское окно. За большей информацией обратитесь к статье Окна со списком.

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

MDICLIENT

Обозначает рабочее окно МНОГОДОКУМЕНТНОГО ИНТЕРФЕЙСА (MDI). Это окно принимает сообщения, которые управляют дочерними окнами прикладной программы MDI. Битами рекомендованного стиля являются WS_CLIPCHILDREN и WS_CHILD. Чтобы создать рабочее окно MDI, которое позволяет пользователю листать изображение в дочернем окне MDI, определите стили WS_HSCROLL и WS_VSCROLL.

За большей информацией обратитесь к статье Многодокументный интерфейс (MDI). 

RICHEDIT (ТЕКСТОВЫЙ ПРОЦЕССОР)

Обозначает орган управления Microsoft® Rich Edit 1.0. Это окно позволяет пользователю просматривать и редактировать текст, форматируя символы и параграфы, и может включать внедренные Component Object Model (COM) объекты. За большей информацией обратитесь к статье Текстовые процессоры.

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

RICHEDIT_CLASS

(КЛАСС ТЕКСТОВОГО ПРОЦЕССОРА)

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

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

SCROLLBAR

(ЛИНЕЙКА ПРОКРУТКИ)

Обозначает прямоугольник, который содержит бегунок и имеет стрелки направленные в оба конца. Линейка прокрутки отправляет предупреждающее сообщение своему родительскому окну всякий раз, когда пользователь щелкает мышью по органу управления. В случае необходимости, родительское окно ответственно за модификацию позиции бегунка. За большей информацией обратитесь к статье Линейки прокрутки.

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

STATIC

(СТАТИЧЕСКИЙ ЭЛЕМЕНТ)

Обозначает простое текстовое поле, окно или прямоугольник, используемый для надписей, окно или другие отдельные органы управления. Статические элементы управления не получают никакой вводимой информации и не предоставляют никакой выводимой информации. За большей информацией обратитесь к статье Статические органы управления.

Таблицу стилей линеек прокрутки, которые Вы можете устанавливать в параметре dwStyle, см. в статье Стили Статических органов управления. 

Смотри также

Краткий обзор Окна, CLIENTCREATESTRUCT, CREATESTRUCT, CreateWindow, EnableWindow, RegisterClass, RegisterClassEx, SetActiveWindow, SetForegroundWindow, SetWindowLong, SetWindowPos, ShowWindow, WM_CREATE, WM_NCCALCSIZE, WM_NCCREATE, WM_PAINT, WM_PARENTNOTIFY

Размещение и совместимость CreateWindowEx

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz