Читайте также:
|
|
Статический орган управления - это окно, создаваемое на базе предопределенного класса "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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Подготовительные работы и допуск к работе | | | Подготовительные работы и допуск к работе |