Данные константы могут объединяться с помощью побитовой операции ИЛИ. По совокупности свойств различают перекрывающиеся (overlapped), временные (pop-up) и дочерние (child) окна.
§ х— Позиция по горизонтали верхнего левого угла окна в экранной системе координат.
§ y— Позиция по вертикали верхнего левого угла окна в экранной системе координат.
§ nWidth— Ширина окна в пикселях.
§ nHeight— Высота окна в пикселях.
§ hWndParent— Дескриптор окна, которое является родителем данного. Если родительского окна нет, то данному параметру присваивается 0.
§ hMenu— Дескриптор меню. Если окно не имеет меню, то данному параметру присваивается 0.
§ hInstance— Дескриптор экземпляра приложения с которым связано данное окно.
§ lpParam— указатель на определяемые пользователем данные.
Например, создать окно зарегестрированного класса в ассемблере можно следующим образом: PUSH 0 PUSH [HINST] PUSH 0 PUSH 0 PUSH 400 ; DY - высота окна PUSH 400 ; DX - ширина окна PUSH 100 ; Y - координата левого верхнего угла PUSH 100 ; X - координата левого верхнего угла PUSH WS_OVERLAPPEDWINDOW PUSH OFFSET TITLENAME ; имя окна PUSH OFFSET CLASSNAME ; имя класса CALL CreateWindowExA
Функция 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.
При работе с окнами иногда необходимо определять координаты и размеры окон.
Во всю область окна входит клиентская часть и не клиентская часть. Заголовок окна, строка меню, меню окна, минимизирующие и максимизирущие кнопки, границы являются неклиентской областью.
Для получение границ всего окна приложения используется функция: