Win32 API. Функции окна - Функция CreateWindowEx
ОГЛАВЛЕНИЕ
Функция 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, // дескриптор меню или идентификатор
// дочернего окна
HINSTANCE hInstance, // дескриптор экземпляра прикладной
// программы
LPVOID lpParam // указатель на данные создания окна
);
Параметры
dwExStyle
Определяет расширенный стиль окна. Этот параметр может быть одно из следующих значений:
- WS_EX_ACCEPTFILES - Определяет, что окно, созданное с этим стилем принимает файлы при помощи информационной технологии "перетащи и вставь".
- WS_EX_APPWINDOW - Активизирует окно верхнего уровня на панель задач, когда окно свернуто.
- WS_EX_CLIENTEDGE - Определяет, что окно имеет рамку с углубленным краем.
- 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_LEFT - Окно имеет общеупотребительные свойства "выравнивания по левой границе". Это - по умолчанию.
- WS_EX_LEFTSCROLLBAR - Если язык оболочки Еврейский, Арабский или другой язык, который придерживается иного порядка чтения, вертикальная линейка прокрутки (если появляется) - слева от рабочей области. Для других языков, этот стиль игнорируется и не обрабатывается как ошибка.
- WS_EX_LTRREADING - Текст окна отображается, используя свойство порядка чтения Слева - Направо. Это - по умолчанию.
- WS_EX_MDICHILD - Создает MDI дочернее окно.
- 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_RIGHTSCROLLBAR - Вертикальная линейка прокрутки (если появляется) - справа от рабочей области. Это - по умолчанию.
- WS_EX_RTLREADING - Если язык оболочки Еврейский, Арабский или другой язык, который придерживается иного порядка выравнивания для чтения, текст в окне отображается, используя свойства порядка чтения, Справа - Налево. Для других языков, стиль игнорируется и не обрабатывается как ошибка.
- WS_EX_STATICEDGE - Создает окно с трехмерным стилем рамки, предполагается использовать для элементов, которые не принимают вводимую информацию от пользователя.
- WS_EX_TOOLWINDOW - Создает окно инструментальных средств; то есть окно предполагается использовать как плавающую инструментальную панель. Окно инструментальных средств имеет строку заголовка, которая является короче, чем нормальная строка заголовка, а заголовок окна выводится, с использованием меньшего шрифта. Окно инструментальных средств не появляется в панели задач или в диалоговом окне, которое появляется, когда пользователь нажимает ALT+TAB.
- WS_EX_TOPMOST - Определяет, что окно, созданное с этим стилем должно быть размещено выше всех, не самых верхних окон и должно стоять выше их, даже тогда, когда окно дезактивировано. Чтобы добавить или удалить этот стиль, используйте функцию SetWindowPos.
- WS_EX_TRANSPARENT - Определяет, что окно, созданное с этим стилем должно быть прозрачным. То есть любые окна, которые появляются из-под окна, не затеняются им. Окно, созданное с этим стилем принимает WM_PAINT сообщения только после того, как все сестринские окна под ним модифицировались.
- WS_EX_WINDOWEDGE - Определяет, что окно имеет рамку с выпуклым краем.
Использование стиля WS_EX_RIGHT для статического или редактируемого элементов управления имеет тот же самый эффект как и использование стиля SS_RIGHT или ES_RIGHT, соответственно. Использование этого стиля с командными кнопками имеет тот же самый эффект как и использование стилей BS_RIGHT и BS_RIGHTBUTTON.
lpClassName
Указывает на строку с нулевым символом в конце или на целочисленный атом. Если lpClassName - атом, он должен быть глобальным атомом, созданным предыдущим вызовом функции GlobalAddAtom. Атом, 16-разрядное значение меньше чем 0xC000, должно быть младшим словом в lpClassName; старшее слово должно быть нулевое. Если lpClassName - строка, она определяет имя класса окна. Имя класса может быть любое имя, зарегистрированное функцией RegisterClass или любым из предопределенных имен класса элементов управления.
lpWindowName
Указывает на строку с нулевым символом в конце, которая определяет имя окна.
dwStyle
Определяет стиль создаваемого окна. Что касается остального списка стилей окна, которые могут быть определены в dwStyle, см. CreateWindow.
x
Определяет начальную горизонтальную позицию окна. Для перекрывающего или выскакивающего окна параметр x - начальная x-координата левого верхнего угла окна, в экранных координатах устройства. Для дочернего окна x - x-координата левого верхнего угла окна относительно левого верхнего угла рабочей области родительского окна. Если x установлен как CW_USEDEFAULT, Windows выбирает заданную по умолчанию позицию для левого верхнего угла окна и игнорирует y параметр. Стиль CW_USEDEFAULT допустим только для перекрывающих окон; если он определен для всплывающего или дочернего окна параметры x и y устанавливаются в нуль.
y
Определяет начальную вертикальную позицию окна. Для перекрывающего или выскакивающего окна, параметр y - начальная y-координата левого верхнего угла окна, в экранных координатах устройства. Для дочернего окна, y - начальная y-координата левого верхнего угла дочернего окна относительно левого верхнего угла рабочей области родительского окна. Для окна со списком, y - начальная y-координата левого верхнего угла рабочей области окна со списком относительно левого верхнего угла рабочей области родительского окна. Если перекрывающее окно создано в стиле WS_VISIBLE с набором битов, а параметр x установлен как CW_USEDEFAULT, Windows игнорирует параметр y.
nWidth
Определяет ширину окна в единицах измерения устройства. Для перекрывающих окон nWidth - ширина окна в экранной системе координат или CW_USEDEFAULT. Если nWidth - CW_USEDEFAULT, Windows выбирает заданную по умолчанию ширину и высоту для окна; заданная по умолчанию ширина простирается от начальных x-координат до правого края экрана; заданная по умолчанию высота простирается от начальной y-координаты до верхней части области значка. Стиль CW_USEDEFAULT допустим только для перекрывающих окон; если CW_USEDEFAULT определен для выскакивающего или дочернего окна, параметры nWidth и nHeight устанавливаются в нуль.
nHeight
Определяет высоту окна в единицах измерения устройства. Для перекрывающих окон, nHeight - высота окна в экранной системе координат. Если параметр nWidth установлен как CW_USEDEFAULT, Windows игнорирует nHeight.
hWndParent
Идентифицирует родительское окно или владельца создаваемого окна. Допустимый дескриптор окна должен быть дан, когда дочернее окно или находящееся в собственности окно созданы. Дочернее окно ограничено рабочей областью родительского окна. Находящееся в собственности окно - перекрывающее окно, которое разрушается, когда окно его владельца разрушено или скрыто, когда его владелец свернут; оно всегда отображается на верхней части окна его владельца. Несмотря на то, что этот параметр должен определять правильный дескриптор, если параметр dwStyle включает в себя стиль WS_CHILD, это необязательно, если dwStyle включает в себя стиль WS_POPUP.
hMenu
Идентифицирует меню или, в зависимости от стиля окна, определяет идентификатор дочернего окна. Для перекрывающего или выскакивающего окна, hMenu идентифицирует меню, которое будет использоваться окном; этот параметр может быть значением ПУСТО (NULL), если меню класса будет использовано. Для дочернего окна, hMenu определяет идентификатор дочернего окна, целочисленное значение, используемое элементом управления диалогового окна, что-бы сообщать родителю о событиях. Прикладная программа определяет идентификатор дочернего окна; он должно быть уникальным для всех дочерних окон того же самого родительского окна.
hInstance
Идентифицирует экземпляр модуля, который будет связан с окном.
lpParam
Указывает на значение, переданное окну через структуру CREATESTRUCT, вызванную параметром lParam сообщения WM_CREATE. Если прикладная программа вызвала CreateWindow, чтобы создать пользовательское окно многодокументной среды, lpParam должен указывать на структуру CLIENTCREATESTRUCT.
Возвращаемые значения
Если функция успешно завершила работу, возвращаемое значение - дескриптор для созданного окна. Если функция потерпела неудачу, возвращаемое значение - ПУСТО (NULL).
Замечания Функция CreateWindowEx посылает создаваемому окну сообщения WM_NCCREATE, WM_NCCALCSIZE и WM_CREATE. За информацией о классах элементов управления окна, стилях окна и стилях элементов управления, используемых с этой функцией, обращайтесь к описанию функции CreateWindow. Windows 95: система может поддерживать максимум 16,364 дескрипторов окна.
Смотри также
CLIENTCREATESTRUCT, CREATESTRUCT, CreateWindow, GlobalAddAtom, RegisterClass, SetWindowPos, WM_CREATE, WM_NCCALCSIZE, WM_NCCREATE, WM_PAINT, WM_PARENTNOTIFY
Размещение и совместимость CreateWindowEx:
Windows NT Да
Win95 Да
Win32s Да
Импортируемая библиотека user32.lib
Заголовочный файл winuser.h
Unicode WinNT
Замечания по платформе hMenu ограничено размером в (СЛОВО) WORD в Win32s