Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2017-12-10 | 230 |
5.00
из
|
Заказать работу |
|
|
Это окно, создаваемое на базе предопределенного класса "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...ENDnameID – для идентификации шаблона меню (строка, число от 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!