Створення і редагування меню

План

Тема: Створення меню

Лекція № 9

1. Створення і редагування меню

2. Визначення меню

 

Як і решта всіх ресурсів додатку, ресурс меню розташований у файлі опису ресурсів з розширенням - гс (resource script). Для доступу до файлу ресурсу перейдіть до на вкладку Resources View (Ресурси), розташовану в нижній частина вікна представлення проекту. Тут, у вигляді деревовидної структури, відображений список всіх ресурсів додатку.

У списку представлені ресурси всіх типів, доступних в даному застосуванні, включаючи растрові зображення, діалогові вікна, піктограми, меню, таблицю рядків і ресурс версії. Розкривши теку Menu, можна проглянути список ресурсів меню. Щоб приступити до редагування певного ресурсу меню, достатньо двічі клацнути на його імені в цьому списку. Вибраний ресурс меню відображається в редакторові меню. Якщо для створення нового проекту використовувався майстер MFC AppWizard, то він міститиме як мінімум один ресурс меню. Це встановлюване за умовчанням меню матиме ім'я (ідентифікатор ресурсу) IDR_MAINFRAME.

За допомогою редактора меню можна відкрити діалогове вікно Menu Item Properties I (Властивості пункту меню), що містить перелік всіх параметрів кожного пункту меню і що дозволяє змінити будь-який з них. Редактор ресурсів допомагає легко переміщатися по різних вікнах. Щоб інші вікна не затуляли вікно Menu Item Properties, клацніть на кнопці із зображенням приколки (схожою на кнопку для приколювання паперу), яка "закріплює" діалогове вікно і запобігає його переміщенню (moving).

Кожен пункт меню володіє трьома основними полями: ID (Ідентифікатор), Caption (Підпис) і Prompt (Підказка). Ідентифікатор (ID) — це унікальна числова константа, що ідентифікує пункт меню. Як буде викладено декілька пізніше (при обговоренні повідомлень меню), кожен з пунктів меню володіє унікальним ідентифікатором, який критично важливий. Підпис (Caption) містить текст, який фактично відображається в меню на екрані. Коли користувачі здійснюють свій вибір в меню, вони бачать саме цей текст. Поле підказки (Prompt) містить будь-який текст, який необхідно відображати i рядку стану (розташованою внизу вікна) при виділенні пункту меню. Поле підказки містить також спливаючу підказку (ToolTip) для даного пункту меню. Проглядати пункти меню можна як за допомогою клавіатури, переміщаючи смугу підсвічування, так і за допомогою миші, проводячи курсором над його елементами. Звернете увагу, пункт меню вважається таким, що переглядається, коли він підсвічується, - це не те ж саме, що і вибір.

Створення нового пункту меню починається із заповнення в діалоговому вікні Menu Item Properties одного з двох полів: ID або Caption. Звичайне створення пункту меню починають з привласнення ідентифікатору одного із значень, зумовлених в MFC. Визначенню значення використовують для тих команд, які середовище виконання MFC здатне выпол-1ять самостійно. Наприклад, ідентифікатор для пункту New (Створити) меню File Файл) — ID_FILE_NEW, для пункту Cut (Вирізувати) меню Edit (Правка) — ID_EDIT_CUT, для пункту New Window (Нове) в меню Window (Вікно) — ID_WINDOW_NEW. Повний писок всіх зумовлених значень ідентифікатора міститься в належному MFC файлі заголовка afxres .h, який містить визначення всіх встановлюваних по замовчуванню ідентифікаторів ресурсів.

Щоб створити свій власний, абсолютно новий пункт меню, необхідно вибрати засаду пункт меню, а потім вказати його назву, заповнивши поле Caption (Підпис). У міру заповнення поля Caption редактор синхронно змінює зовнішній вигляд меню, відображаючи результати змін, що вносяться. Це дозволяє оцінити довжину рядків меню у міру їх заповнення. Як тільки підпис пункту меню буде вказаний, редактор меню самостійно встановить його ідентифікатор. Щоб проглянути автоматично створений ідентифікатор, клацніть на будь-якому іншому пункті меню а потім поверніться до того, що цікавить. Якщо автоматично встановлена назва ідентифікатора не сподобалася, то змінити його не складе труднощів: досить просто ввести його замість колишнього.

Заповнюючи поле Caption, не забувайте про клавіатурну мнемоніку (keyboard mnemonic) пункту меню. Клавіатурна мнемоніка дозволяє перейти до пункту меню за допомогою клавіатури. Мнемоніка спрацьовує у тому випадку, коли користувач активізує пункти меню, утримуючи натиснутою клавішу <Alt> і послідовно натискаючи клавіші, відповідні підкресленим символам в назвах пунктів. Будьте обережні, не допускайте збігу мнемонічних символів. Наприклад, клавіатурна мнемоніка дозволяє вибирати в меню File (Файл) пункт Open (Відкрити) за допомогою простої комбінації клавіш <Alt+F+0> — тобто, утримуючи клавішу <Alt>, достатньо послідовно натиснути клавіші <F> і <0>.

З погляду користувача, клавіатурна мнемоніка — це те ж саме, що і клавіші акселератора. Але з погляду програмування, це абсолютно різні речі, оскільки підтримка мнемоніки здійснюється самою системою меню, а клавіші акселератора, як це буде продемонстровано далі, визначені в таблиці акселераторів. Для визначення мнемонічного символу досить встановити перед ним символ амперсанта (&) прямо в полі підпису (Caption), на екрані такий символ виглядатиме підкресленим. Але щоб вставити в текст меню сам символ амперсанта, в полі підпису доведеться додати два символи (& &).

Третім підметом обов'язковому визначенню полем пункту меню є поле Prompt (Підказка). Поле Prompt містить текст, що відображається в рядку стану при перегляді користувачем пункту меню. Не дивлячись на те, що заповнення цього поля здійснюється в редакторові меню, сам рядок підказки ресурсу меню не належить. Вона зберігається як елемент ресурсу таблиці рядків, причому значення ідентифікатора цього рядка відповідає ідентифікатору пункту меню. Це ще одна перевага використання редактора ресурсів в процесі створення ресурсів меню.

Поле Prompt (Підказка) має дві частини: текст для рядка стану і текст для спливаючої підказки. Про текст в рядку стану мовилося раніше, а спливаюча підказка (ToolTip) — це невелике поле (зазвичай жовтого кольору), яке з'являється, коли користувач наводить курсор миші на кнопку панелі. Як показано в приведеному нижче прикладі (що є створюваним MFC рядком підказки для пункту меню Print (Друк)), дві частини тексту розділено символом нового рядка (\n):

Print the active document\nPrint