Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Статические органы управления

Читайте также:
  1. NUTRILITE™ Женская Гармония влияет на все системы, на все органы.
  2. SWOT-анализ муниципальной системы управления образованием
  3. V11 Мочеполовая система, органы
  4. А Средства формирования и управления общественным сознанием.
  5. Анализ компоновочных схем гидроприводов рулевого управления автомобилей.
  6. Анализ показателей качества управления дебиторской задолженности.
  7. Анализ хозяйственной деятельности. Его сущность, место и роль в системе управления.

Статический орган управления - это окно, создаваемое на базе предопределенного класса "static". Строго говоря, статический орган управления нельзя использовать для управления работой приложения, так как он не воспринимает щелчки мыши и не способен обрабатывать сообщения от клавиатуры. Статический орган управления не посылает родительскому окну сообщение WM_COMMAND. Обычно этот орган управления используется для оформления внешнего вида диалоговых панелей или окон приложения. Задавая различные стили, вы можете создать статический орган управления в виде закрашенного или незакрашенного прямоугольника, а также строки текста. Статические органы управления могут использоваться внутри диалоговых панелей для отображения пиктограмм.

Для создания статического органа управления нужно использовать функцию CreateWindow. В качестве первого параметра этой функции следует указать класс окна "static":

HWND hStatic;hStatic = CreateWindow("static", NULL,WS_CHILD | WS_VISIBLE | SS_BLACKFRAME,20, 40, 100, 50,hWnd, (HMENU)-1, hInstance, NULL);

Второй параметр определяет текст, который будет расположен внутри органа управления. Вы можете указать этот параметр как NULL, если текст не используется.

В третьем параметре следует указать один из стилей статического органа управления. В нашем примере указан стиль SS_BLACKFRAME.

Так как статический орган управления не посылает сообщения родительскому окну, в качестве девятого параметра (идентификатор органа управления) можно указать любое число, например, ­1.

Стили статического органа управление определяют внешний вид и применение органа. Стили SS_BLACKFRAME, SS_GRAYFRAME и SS_WHITEFRAME предназначены для создания прямоугольных рамок. При помощи этих стилей создаются, соответственно, черные, серые и белые рамки. Внутренняя область рамки остается незакрашенной.

Цвета рамки соответствуют системным цветам, определенным в Windows. Эти цвета можно изменить при помощи стандартного приложения Windows с названием Control Panel. При создании статических органов управления со стилями SS_BLACKFRAME, SS_GRAYFRAME и SS_WHITEFRAME текст заголовка окна не используется. Соответствующий параметр функции CreateWindow следует указать как NULL.

Для создания закрашенных прямоугольников используются стили SS_BLACKRECT, SS_GRAYRECT и SS_WHITERECT. Эти стили позволяют создать статические органы управления в виде закрашенных прямоугольников, соответственно, черного, серого и белого цветов (используются системные цвета, как это описано выше). Для этих стилей текст заголовка окна не используется. Соответствующий параметр функции CreateWindow следует указать как NULL.

Статические органы управления удобно использовать для вывода текста. Вы можете использовать пять базовых стилей SS_LEFT, SS_RIGHT, SS_CENTER, SS_LEFTNOWORDWRAP, SS_SIMPLE и один модификатор SS_NOPREFIX.

При использовании стиля SS_LEFT приложение задает размер органа управления, внутри которого будет выведен текст. Орган управления выводит текст (используя для этого функцию DrawText), выравнивая его влево и выполняя свертку слов. Текст, который не поместился в окне, обрезается. Выполняется замена символов табуляции на пробелы.

Стили SS_RIGHT и SS_CENTER используются аналогично, но текст выравнивается, соответственно, по правой границе органа управления или центрируется.

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

Стиль SS_SIMPLE похож на стиль SS_LEFTNOWORDWRAP, но вывод текста выполняется быстрее (используется функция TextOut) и замена символов табуляции на пробелы не выполняется. Часть текста, которая не поместилась в окне, обрезается.

Модификатор SS_NOPREFIX используется также в тех случаях, когда необходимо отменить специальную обработку символа "&". Обычно этот символ не выводится статическими органами управления на экран, а следующий за ним символ изображается подчеркнутым (для изображения символа "&" его надо повторить два раза подряд)

Стиль SS_ICON используется для изображения пиктограмм в диалоговых панелях.

 

Элемент управления «Кнопка»

Кнопка — это прямоугольное окно обычно небольшого размера и имеющее название, в котором указано ее назначение. Кнопки являются широко исполь­зуемыми элементами управления Windows-приложений, что обусловлено их разнообразием. Существует пять основных типов кнопок, определенных в классе CButton библиотеки MFC:

□ обыкновенные (нажимаемые) кнопки

□ специализированные кнопки ОК и Cancel (Отмена), используемые в диа­логовых окнах

□ радиокнопки (Отличительным признаком радиокнопок является то, что активной является только одна кнопка из группы, такие кнопки часто создаются в тестах, где правильным ответом является только один из вариантов)

□ отмечаемые кнопки (если в тесте несколько вариантов ответа)

В библиотеке MFC также есть класс CBitMapButton для кнопок с растровыми изображениями, производный от класса CButton и наследующий все его воз­можности. Кнопка с растровым изображением — это стандартная кнопка, которая вместо поясняющего текста содержит растровый рисунок (пикто­грамму).

Кнопки могут применяться несколькими способами.

Для ввода команды пользователя используется нажимаемая кнопка.

Если существует взаимоисключающий набор опций, то применяется сгруп­пированный набор радиокнопок.

Если несколько опций не являются взаимоисключающими (пользователь од­новременно может выбрать несколько возможностей), то используется набор отмечаемых кнопок (флажков).

Чтобы создать видимую рамку вокруг взаимосвязанной группы элементов управления (например, группы радиокнопок или отмечаемых кнопок), ис­пользуется блок группировки.

Два класса кнопок— CButton и CBitMapButton— имеют простой набор мето­дов, что упрощает работу с ними.

Для управления кнопкой можно использовать сообщение BM_SETSTATE, которое позволяет установить кнопку в нажатое или отжатое состояние.

Для установки кнопки в нажатое состояние следует передать ей сообщение BM_SETSTATE с параметром wParam, равным TRUE, и lParam, равным 0:

SendMessage(hButton, BM_SETSTATE, TRUE, 0L);

Для возврата кнопки в исходное состояние передаётся ей то же самое сообщение, но с параметром wParam, равным FALSE:

SendMessage(hButton, BM_SETSTATE, FALSE, 0L);

Сообщения от кнопок (объектов CButton и CBitMapButton) представлены в таблице

Сообщение Отправленное к родительскому элементу, когда…
ON_BN_CLICKED илиON_COMMAND Пользователь нажимает кнопку.
ON_BN_DOUBLECLICKED Пользователь дважды щелкает кнопку.

Для создания кнопки приложение должно создать дочернее окно на базе предопределенного класса "button". После этого родительское окно будет получать от кнопки сообщение с кодом WM_COMMAND. Этим сообщением кнопка информирует родительское окно о том, что с ней что-то сделали, например, нажали.

 

Для создания кнопки надо вызвать функцию CreateWindow.

HWND CreateWindow(LPCSTR lpszClassName,LPCSTR lpszWindowName, DWORD dwStyle,int x, int y, int nWidth, int nHeight,HWND hwndParent, HMENU hmenu, HINSTANCE hinst,void FAR* lpvParam);

Параметр функции lpszClassName - указатель на строку, содержащую имя класса, на базе которого создается окно. Для создания кнопки необходимо указать имя класса "button".

Параметр функции lpszWindowName - указатель на строку, содержащую заголовок окна (Title Bar). Эта строка будет написана на кнопке.

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

Парамеры x и y функции CreateWindow определяют горизонтальную (x) и вертикальную (y) координату кнопки относительно верхнего левого угла родительского окна.

Параметры nWidth и nHeight определяют, соответственно, ширину и высоту создаваемой кнопки.

Параметр hwndParent определяет идентификатор родительского окна, на поверхности которого создается кнопка.

Параметр hmenu - идентификатор меню или идентификатор порожденного (child) окна. Для каждого создаваемого вами дочернего окна вы должны определить собственный идентификатор. Родительское окно будет получать от дочерних окон сообщения. При помощи идентификатора дочернего окна функция родительского окна сможет определить дочернее окно, пославшее сообщение родительскому окну.

Параметр hinst - идентификатор приложения, которое создает окно. Необходимо использовать значение, передаваемое функции WinMain через параметр hInstance.

Последний параметр функции (lpvParam) представляет собой дальний указатель на область данных, определяемых приложением. Этот параметр передается в функцию окна вместе с сообщением WM_CREATE при создании окна. Для кнопки вы должны указать значение NULL.

Для создания кнопки с надписью "Help" в точке с координатами (10, 30) и размерами (40, 20) можно использовать, например, такой вызов функции CreateWindow:

 

hHelpButton = CreateWindow("button", "Help",WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,10, 30,40, 20,hWnd,(HMENU)IDB_Help, hInstance, NULL);

Некоторые стили кнопок:

BS_DEFPUSHBUTTON - Стандартная кнопка с толстой рамкой вокруг

BS_PUSHBUTTON - Стандартная кнопка без рамки

BS_LEFTTEXT - Этот стиль указывается вместе с другими и означает, что текст, расположенный около кнопки, должен находиться слева, а не справа от кнопки

BS_OWNERDRAW - Внешний вид кнопки определяется родительским окном, которое само рисует кнопку во включенном, выключенном или неактивном состоянии

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


Дата добавления: 2015-09-03; просмотров: 85 | Нарушение авторских прав


Читайте в этой же книге: Стандартные элементы управления | Новое поколение Windows. Передача информации с помощью сообщений. Независимость от драйверов аппаратуры. Plug-and-play. Библиотеки динамической компоновки. 16 бит против 32 бит. | Новое поколение Windows. Различные аппаратные платформы. Различные программные платформы. Многопроцессорные системы. Гибкость. | Требования к программному и аппаратному обеспечению Windows приложений. Требования к программному обеспечению. Требования к аппаратуре. | Логическая система координат | Доступ к оболочке Windows. Поля вывода. Изменение пределов поля вывода и окна. Координаты, определяемые пользователем. Выбор начальных атрибутов окна. | Некоторые функции, имеющие отношение к сообщению WM_PAINT. | Вывод окна. Изменение вида окна. Часто используемые элементы управления и диалоговые окна. Статические элементы управления. Элементы управления - кнопки. | Модальная диалоговая панель | Обмен данными диалога |
<== предыдущая страница | следующая страница ==>
Подготовительные работы и допуск к работе| Подготовительные работы и допуск к работе

mybiblioteka.su - 2015-2024 год. (0.011 сек.)