Win32 API. Функции окна - Функция CreateWindow
ОГЛАВЛЕНИЕ
Функция CreateWindow
(СоздатьОкно)
Функция CreateWindow создает перекрывающее, выскакивающее или дочернее окно. Она определяет класс, заголовок, стиль окна и (необязательно) исходное положение и размер окна. Функция также определяет окно родителя или владельца, если таковые вообще имеются, и меню окна.
Синтаксис:
HWND CreateWindow
(
LPCTSTR lpClassName, // указатель на зарегистрированное имя класса
LPCTSTR lpWindowName, // указатель на имя окна
DWORD dwStyle, // стиль окна
int x, // горизонтальная позиция окна
int y, // вертикальная позиция окна
int nWidth, // ширина окна
int nHeight, // высота окна
HWND hWndParent, // дескриптор родительского или окна владельца
HMENU hMenu, // дескриптор меню или идентификатор дочернего окна
HANDLE hInstance, // дескриптор экземпляра приложения
LPVOID lpParam // указатель на данные создания окна
);
Параметры
lpClassName
Указывает на строку с нулевым символом в конце или - на целочисленный атом. Если этот параметр - атом, он должен быть общим атомом, созданным предыдущим обращением к функции GlobalAddAtom. Атом - 16-разрядное значение меньшее, чем 0xC000, должно быть в младшем слове lpClassName; старшее слово должно быть нулевое. Если lpClassName - строка, она определяет имя класса окна. Имя класса может быть любое имя, зарегистрированное функцией RegisterClass или любым из предопределенных имен класса элементов управления. Полный список, см. в следующем разделе Замечания.
lpWindowName
Указывает на строку с нулевым символом на конце, которая определяет имя окна.
dwStyle
Определяет стиль создаваемого окна. Этот параметр может быть комбинацией стилей окна и стилей панелей управления, перечисленных в ниже следующем разделе Замечания.
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, чтобы создать пользовательское окно интерфейса многодокументной среды(MDI), lpParam должен указывать на структуру CLIENTCREATESTRUCT.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - дескриптор созданного окна. Если функция потерпела неудачу возвращаемое значение - ПУСТО (NULL). Чтобы получить расширенную информацию об ошибке вызовите функцию GetLastError.
Замечания
Перед возвратом значения, CreateWindow посылает сообщение WM_CREATE оконной процедуре.
Для перекрывающих, выскакивающих и дочерних окон CreateWindow посылает окну сообщения WM_CREATE, WM_GETMINMAXINFO и WM_NCCREATE. Параметр lParam сообщения WM_CREATE содержит указатель на структуру CREATESTRUCT. Если определен стиль WS_VISIBLE, CreateWindow посылает окну все сообщения, требующиеся для того, чтобы активизировать и показать окно.
Если стиль окна определяет строку заголовка, заголовок окна, указанный в lpWindowName отображается в строке заголовка. Когда CreateWindow используется, чтобы создать элементы управления, типа кнопок, переключателей и статических элементов управления, lpWindowName используют, чтобы определить текст на элементе управления.
Если при компоновке вашей прикладной программы Вы определяете версию Windows - 4.x, ее окна не могут иметь кнопки в строке заголовка, если они к тому же не имеют меню окна. Этого не требуется для прикладных программ, которым при компоновке Вы определили версию Windows - 3.x.