Функция CreateWindow

Функция CreateWindow создает перекрывающее, выскакивающее или дочернее окно. Она определяет класс, заголовок, стиль окна и (необязательно) начальную позицию и размер окна. Функция также определяет и окно родителя или владельца, если таковые имеются и меню окна.

Чтобы использовать расширенные стили окна в дополнение к стилям, поддерживаемым CreateWindow, используйте функцию CreateWindowEx.

Синтаксис

HWND CreateWindow(

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

);

Параметры

lpClassName

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

lpWindowName

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

dwStyle

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

x

[in] Определяет начальную горизонтальную позицию окна. Для перекрывающего или выскакивающего окна, параметр 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, система игнорирует 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.

Замечания

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

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

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

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

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

 

Системный класс

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

BUTTON

(КНОПКА)

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

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

COMBOBOX

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

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

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

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

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

EDIT

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

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

Таблицу стилей окна редактирования текста, которые Вы можете устанавливать в параметре 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, см. в статье Стили Статических органов управления.

Windows 95/98/Me: Система может поддерживать максимум 16,364 дескриптора окна.

Windows 95/98/Me: Функция CreateWindowW поддерживается при помощи Microsoft Layer for Unicode (MSLU). Чтобы использовать его, Вы должны добавить некоторые файлы к вашему приложению, как изложено Microsoft Layer for Unicode (MSLU) для систем Windows 95/98/Me.

Обратите внимание!, если Вы устанавливаете Microsoft Windows ® версии 4.x или позже при компоновке вашего приложения, его окна не могут иметь надписи кнопок, если они к тому же не имеют меню окна. Это не является необходимым условием, если Вы при компоновке вашего приложения устанавливаете версию Windows 3.x.

Ниже перечисленные стили окон могут быть определены в параметре dwStyle:

Пример

Пример смотри в статье Использование классов окна

Смотри также

Краткий обзор Окна, CREATESTRUCT, CreateWindowEx, EnableWindow, RegisterClass, RegisterClassEx, ShowWindow, WM_COMMAND, WM_CREATE, WM_GETMINMAXINFO, WM_NCCREATE, WM_PAINT

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

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