Статический орган управления (статический текстовый объект) — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Статический орган управления (статический текстовый объект)

2017-12-10 230
Статический орган управления (статический текстовый объект) 0.00 из 5.00 0 оценок
Заказать работу

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

Когда курсор мыши перемещается над статическим органом управления, Windows посылает функции окна этого органа сообщение WM_NCHITTEST. В ответ на это сообщение статический орган возвращает Windows значение HTTRANSPARENT. В результате Windows посылает сообщение WM_NCHITTEST родительскому окну, лежащему под органом управления.

Используется для оформления внешнего вида диалоговых панелей или окон приложения, для отображения пиктограмм.

А) Создание

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

2 – текст внутри статического органа; 8 – идентификатор родительского окна

9 – так как статический орган управления не посылает сообщения родительскому окну, можно указать любое число – идентификатор статического органа

Б) Стили:

SS_BLACKFRAME, SS_GRAYFRAME и SS_WHITEFRAME – прямоугольные рамки, внутри не закрашены

SS_BLACKRECT, SS_GRAYRECT и SS_WHITERECT – закрашенные прямоугольники.

SS_LEFT, SS_RIGHT, SS_CENTER, SS_LEFTNOWORDWRAP, SS_SIMPLE – для текста.

4 – обрезает не поместившийся текст и заменяет ТАВ на пробелы

5 – то же, но без замены.


Способы создания меню

Меню – важный элемент пользовательского интерфейса Windows. Существует несколько типов меню: 1) Меню приложения; 2) Временное меню; 3) Многоуровневое меню; 4) Плавающее меню.

 

Включение меню может быть произведено несколькими (тремя) методами:

1) С помощью текстового редактора (простой способ)

2) С помощью графического редактора

3) Непосредственно в оперативной памяти

 

Рассмотрим наиболее часто используемые способы создания меню.

1. Создание меню в файле ресурсов

а) Описание шаблона в файле ресурсов

nameID MENU [load] [mem] – необязательные параметрыBEGIN...END

nameID – для идентификации шаблона меню (строка, число от 1 до 65535).

MENU – служебное слово

[load] – необязательный; определяет момент загрузки меню в память. (PRELOAD – загрузка сразу после запуска приложения LOADONCALL – загрузка только при отображении меню)

[mem] – необязательный; влияет на тип памяти, выделяемой для хранения шаблона (FIXED, MOVEABLE, DISCARDABLE – не перемещаемый, перемещаемый (по умолчю.), освобождаемый).

б) Описание операторов временных меню POPUP

POPUP text [, param]BEGIN...END

в) Описание операторов строк MENUITEM

MENUITEM text, id [, param] // располагаются между BEGIN и END

 

text – имя строки, буква после & будет подчеркнута, \t – табуляция, \a – выравнивает по правой границе

id – определяет число, кот.идентиф-ет пункт меню. (приложение получит его с сообщением WM_COMMAND при выборе данного меню)

[param] – бывает CHECKED √, GRAYED, INACTIVE (не активная, но не серая) и другие (MENUBREAK, MENUBARBREAK, HELP – слева от текста вертикальная линия)

MENUITEM SEPARATOR // создание горизонтальной разделительной линии

г) Пример меню

#include "menu.hpp"APP_MENU MENU BEGIN POPUP "&File" BEGIN MENUITEM "&New", CM_FILENEW MENUITEM "&Open...", CM_FILEOPEN ENDEND

Константы лучше описывать в отдельном файле "menu.hpp":

#define CM_FILEOPEN 24332

#define CM_FILENEW 24331

д) Подключение меню к окну приложения

1) При регистрации класса:

Для подключения меню необходимо записать адрес текстовой строки "APP_MENU" в поле lpszMenuName структуры wc, имеющей тип WNDCLASS:

wc.lpszMenuName = "APP_MENU";2) При создании окна:hwnd = CreateWindow(…, APP_MENU, …) - девятый параметр – идентификатор меню. У дочерних окон нет меню. 2. С помощью функций в теле программы Приведем перечень основных функций для работы с меню: 1.HMENU WINAPI CreateMenu(void);// Создает пустое меню, возвращает ID меню в случае успеха,NULL - иначе 2.HMENU WINAPI CreatePopupMenu(void); // Для создания пустого временного меню 3.HMENU WINAPI DestroyMenu(void); // Для удаления меню (перед завершением работы)

4. Для подключения к окну с идентификатором hwnd меню с идентификатором hmenu вы можете воспользоваться функцией: BOOL WINAPI SetMenu(HWND hwnd, HMENU hmenu);

Перед вызовом этой функции вы должны загрузить меню и получить его идентификатор, например, при помощи функции LoadMenu.

 

5. Для добавления строк в пустые меню можно воспользоваться функцией:

BOOL WINAPI AppendMenu(HMENU hmenu, UINT fuFlags, UINT idNewItem, LPCSTR lpszNewItem);

UINT fuFlags определяет атрибуты элемента меню (MF_CHECKED – √, MF_GRAYED – строка серая, неактивная, MF_ENABLED – нормальный вид, MF_POPUP – с данным элементом связывается временное меню, MF_STRING – элемент является строкой символов).

idNewItem – указывается идентификатор создаваемой строки меню, если это не MF_POPUP

lpszNewItem – разные значения в зависимости от флага (подпись строки, как правило)

AppendMenu(hmenu, MF_ENABLED|MF_POPUP{ или MF_STRING},(UINT)hmenuFile { или IDM_FOUR}, "File");

6. Для перерисовки полосы меню для hwnd окна: void WINAPI DrawMenuBar(HWND hwnd);

_______________________________________________________________________________

7. Вставка команды между имеющимися строками:

BOOL WINAPI InsertMenu(HMENU hmenu, UINT idItem, UINT fuFlags, UINT idNewItem, LPCSTR lpszNewItem);

Есть 2 флага (MF_BYCOMMAND и MF_BYPOSITION), в зависимости от которых idItem определит идентификатор или порядковый номер элемента, перед которым будет вставка). Для добавления в конец, необходимо написать -1.

8. Для изменения строк – функция (после нее нужна перерисовка):

BOOL WINAPI ModifyMenu(HMENU hmenu, UINT idItem, UINT fuFlags, UINT idNewItem, LPCSTR lpszNewItem);

9. Удаление элементов меню: BOOL WINAPI DeleteMenu(HMENU hmenu, UINT idItem, UINT fuFlags);

10. Удаление элементов меню без освобождения занятых им ресурсов:


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.