HMENUg_hmPopup;
31. Создать меню в обработчике сообщения WM_CREATE сразу после всех операций по созданию меню и добавить к этому меню несколько пунктов, как показано в листинге 4.24. Листинг 4.24
g_hmPopup = CreatePopupMenu();
AppendMenu(g_hmPopup,MF_STRING, 1000,TEXT(«pop 1»));
AppendMenu(g_hmPopup,MF_STRING, 1001, TEXT(«pop 2»));
AppendMenu(g_hmPopup,MF_STRING, 1002,TEXT(«pop 3»));
AppendMenu(g_hmPopup,MF_STRING|MF_MENUBARBREAK, 1003, TEXT(«pop 4»));
AppendMenu(g_hmPopup,MF_STRING|MF_CHECKED, 1004,TEXT(«pop 5»));
AppendMenu(g_hmPopup,MF_STRING, 1005, TEXT(«pop 6»));
32. Теперь нужно создать обработчик для вызова меню при щелчке правой кнопкой мыши, как показано в листинге 4.25. Листинг 4.25
case WM_LBUTTONDOWN:
{
WORD xPos = LOWORD(lParam); // horizontal position of the cursor
WORD yPos = HIWORD(lParam); // vertical position of the cursor
if (g_hmPopup){
TrackPopupMenuEx(g_hmPopup,0, xPos, yPos, hWnd, NULL);
}
}
break;
33. Запустить проект. Легко убедиться, что всплывающее меню работает так, как надо.
Стоит подробнее рассмотреть диалоговое окно создания и редактирования пункта меню. В этом окне три вкладки, на каждой из которых находятся элементы управления. Органы управления вкладки General перечислены в следующем списке.
? ID – идентификатор команды меню, по которому приложение будет обращаться к этой команде для обработки событий или манипуляций с данной кнопкой.
? Caption – название команды меню.
? Caption ID – идентификатор строкового ресурса, в котором хранится название команды меню.
? Pop-Up – установка этого флажка говорит о том, что данный пункт меню имеет подменю, которые будут выведены во всплывающем окне. В редакторе меню при выделении пункта меню с включенным свойством Pop-up над этим пунктом появляется прямоугольник, позволяющий редактировать всплывающее меню.
? Separator – установка этого флажка превращает данный пункт меню в разделитель.
? Shared New – выводит в строку меню кнопку New, предназначенную для создания нового пустого документа.
? Prompt – текст, предназначенный для автоматического показа в строке состояния, когда выбрана данная команда меню.
? Свойство Break имеет три состояния. Значение None указывает, что свойство не активно. Значение Column говорит о том, что данный пункт меню начинает следующий вертикальный столбец, а значение Bar указывает, что данный пункт меню начинает следующий вертикальный столбец, отделенный от предыдущего вертикальной линией.
В следующем списке рассматриваются органы управления, расположенные на вкладке Styles.
? Check Button – при установке данного флажка кнопка меню становится западающей. После первого щелчка мышью она переходит в нажатое состояние, после второго – возвращается в исходное состояние.
? Group – установка данного флажка позволяет создавать группу кнопок. Это имеет смысл, когда кнопки все имеют стиль Check Button. Тогда нажатие одной кнопки вызывает автоматическое отжатие другой кнопки в группе.
? Auto Size – автоматически меняет размер кнопки при изменении надписи.
? No wrap – установка флажка не позволяет переносить текст на другую строку.
? Pressed – нажатая кнопка при создании меню. Имеет смысл для кнопки со стилем Check Button.
? Grayed – кнопка будет окрашена в серый цвет и станет неактивна.
? Indeterminate – кнопка неопределенного стиля, активная, но серая.
? Hidden – скрытая кнопка.
? Highlighted – надпись кнопки подкрашена в контрастный цвет.
И наконец, в последнем списке рассматривается предназначение органов управления, расположенных на вкладке More Styles.
? Bitmap – кнопка вместо надписи несет на себе изображение.
? Bitmap index – уникальный индекс, идентифицирующий номер изображения в наборе изображений, подключенных к меню.
Однако меню не исчерпывает все потребности при создании набора команд. Гораздо большую гибкость дает элемент управления CommandBar.
CommandBar
Рассмотрение возможностей этого органа управления лучше начать с конкретного примера, который приведен в следующем разделе.
Упражнение 4.6
1. Создать простое приложение и сохранить его с именем CommandBar.
2. В окне Workspace перейти на вкладку ResourceView, открыть корневую папку Menu resources и в этой папке перейти в подкаталог Menubar. Существующее меню нужно отредактировать так, чтобы оно содержало команды Tools, File и Edit. Не надо добавлять дополнительные элементы в меню, создавать подменю и совершать прочие действия, которые уже рассматривались в предыдущем упражнении. Данное меню будет нужно только для демонстрации использования ресурса меню при помещении его в CommandBar.
3. Как и в прошлом упражнении, добавить к ресурсам изображение для кнопок.
4. Щелкнуть внутри дерева ресурсов правой клавишей мыши на папке Dialogs и в контекстном меню выполнить команду Insert Dialog. В папку будет добавлен еще один диалог с идентификатором IDD_DIALOG1. Теперь нужно перейти в правую часть окна, в редактор диалога. На панели Controls следует отыскать компонент Combo Box и поместить его на окно диалога.
Читать дальше
Конец ознакомительного отрывка
Купить книгу