69267

Створення меню

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-10-02

55.5 KB

0 чел.

Лекція № 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

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

Існує два способи визначення меню. Один з них має на увазі програмне створення, що дозволяє динамічно формувати необхідні меню даних, що виникають під час виконання. Але найчастіше застосовують інший спосіб, що має на увазі створення меню заздалегідь, у вигляді ресурсу меню. А зараз створимо демонстраційний проект SDI під назвою SDIMenus. Як тільки проект буде створений, перейдіть в представлення Resource View (Ресурси) і відкрийте теку Menu (Меню), вміст якої відображає всі меню, що належать даному застосуванню.

Як було сказано в розділі 2, "Документи і представлення SD1", меню пов'язані з фреймовими вікнами і завантажуються у момент створення фрейму. Інші ресурси (такі як клавіші акселератора) теж завантажуються у цей момент. Фактично, все це відбувається при виклику середовищем виконання функції CFrameWnd: :LoadFrame, якою передаються ідентифікатори ресурсів всіх елементів інтерфейсу. У додатку SDI, створеному майстром Аррwizard, даний ресурс за умовчанням має ідентифікатор IDR_MAINFRAME. Отже, в представленні Resource View (Ресурси) не так вже і складно буде відшукати меню, що відображається додатком при запуску. Тепер двічі клацніть на імені IDR_MAlNFRAME ресурсу меню, щоб відкрити його в редакторові

Як можна відмітити, при створенні додатку SDI надається достатньо багато стандартних пунктів меню. В першу чергу звернете увагу на елементи меню: File (Файл), Edit (Правка), View (Вигляд) і Help (Довідка). Всі вони називаються спливаючими меню (popup menu), оскільки можуть містити як дочірні елементи інші пункти меню. Якщо вибрати один з цих елементів меню, а потім проглянути діалогове вікно Properties, то можна відмітити, що властивість Popup встановлена в стан True. Меню File (см, мал. 4.1) містить стандартні пункти, що дозволяють створювати нові документи (файли), а також відкривати і зберігати їх. Присутні також пункти меню, призначені для друку, і список файлів, відкритих останніми. Меню Edit (Правка) містить пункти, призначені для роботи з буфером обміну (Undo (Відмінити), Сміттю (Копіювати), Cut (Вирізувати) і Paste (Вставити)). Меню View (Вигляд) містить пункти для перемикання відображення панелі інструментів і рядка стану, а меню Help (Довідка) містить пункт для виклику діалогового вікна About (Про програму). Пункти, які майстер поміщає в меню, автоматично зв'язуються з відповідними функціями і можуть працювати без жодної додаткової коди, що додається розробником. У міру викладу цього розділу буде описано, як додавати свої власні пункти меню, як асоціювати з ними код (обробники подій), а в деяких випадках і перевизначати стандартні обробники подій, розробки, що надаються середовищем. А поки продовжимо вивчення основних концепцій створення і забезпечення меню.

Кожен пункт меню має три обов'язкові елементи: текст імені (наприклад, Сміттю), який користувач бачить на екрані, числове значення, яке унікально ідентифікує пункт меню, і символьну константу, яка використовується в коді для звернення до даного елементу. Числове значення повинне бути унікальним, оскільки використовується для зв'язку пункту меню з його обробником (або обробниками) події. Тому, коли в меню додається новий пункт, середовище розробки Visual Studio автоматично генерує необхідне числове значення. Звернете увагу, в діалоговому вікні Properties це значення змінити не можна. Так само середовище розробки Visual Studio гарантує унікальність цього числа. Отже, єдиним значенням, про яке необхідно поклопотатися, є символьна константа. Її значення також створюється автоматично при додаванні нового пункту в меню. Воно складається з імені спливаючого меню, об'єднаного з ім'ям пункту меню. Щоб побачити це своїми очима, відкрийте діалогове вікно Properties для пункту New меню File і переконайтеся, що властивість ID має значення ID_FILE_NEW. Отже, щоб звернутися до цього пункту меню програмно, можна використовувати цей ідентифікатор. Незабаром, при описі додавання обробника події для пункту меню, буде продемонстровано, що це значення поміщається в карту повідомлень, дозволяючи пов'язати даний пункт меню з обробником події.

Щоб краще продемонструвати ряд важливих аспектів визначення меню, пробуємо створити свій власний елемент меню. Редактор меню надає вільне місце для введення нового елементу меню (праворуч від останнього спливаючого меню верхнього рівня, де розташований лаконічний текст "Type here" (Вводити тут)). Просто клацніть мишею в цій області, наберіть текст My &Menu і натисніть кнопку <Enter>. Символ амперсант використовується для того, щоб вказати мнемонічний символ меню (в даному випадку другий символ М), який на екрані буде виділений підкресленням. Таким чином, якщо користувач, утримуючи клавішу <Alt>, натисне мнемонічну клавішу <М>, то це буде аналогічно вибору даного меню. Але, що якщо текст назви меню повинен містити символ амперсанта? Зробити це дуже просто, досить ввести два символи амперсанта.

Тепер додайте нижче за напис My Menu новий елемент, що містить текст Say Hello. Якщо проглянути властивості цього елементу, то можна відмітити, що його ідентифікатором є ID_MYMENU_SAYHELLO. Звернете увагу, формуючи ідентифікатор нового елементу, середовище розробки Visual Studio видалило з імен всі пропуски. Забігаючи трохи вперед, скажімо, що при зверненні до пункту меню по ідентифікатору мова йтиме саме про це значення. У літературі нерідко згадують пункти меню по їх ідентифікаторах, а не по написах — це звичайний спосіб їх опису в тексті.

Що робити, якщо пункт меню необхідно розташувати у іншому місці, відмінному від поля, що допускає введення? Для цього досить перетягнути елемент на нове місце, утримуючи ліву кнопку миші натиснутої. Оскільки правила оформлення призначеного для користувача інтерфейсу (UI) свідчать, що для додатків SDI двома крайніми зліва меню повинні бути File і Edit, а двома крайніми справа — View і Help, перетягнемо і розташуємо меню My Menu безпосередньо після меню Edit.

Викличемо діалогове вікно Properties для пункту меню Say Hello, і проглянемо його найбільш важливі параметри. Першим з обов'язкових для заповнення у кожного нового пункту 1еню, є властивість Prompt (Підказка). Це значення відображається в рядку стану додатку при перегляді елементу меню. Таким чином, для даного пункту меню можна вести щось на зразок наступного "Display а message indicating that the event handler was called" (Відображає повідомлення про виклик обробника події). 5водить необхідне без лапок. Правила оформлення призначеного для користувача інтерфейсу гла-ят що цей рядок повинен лаконічно описувати дію пункту меню і не повинен завірятися крапкою. Звернете увагу, якщо розробник забуде вказати підказку для пункту 1еню, то при запуску додатку в режимі відладки, MFC видасть застережливе повідомлення, що відображається у вікні виведення Visual Studio.

Далі, звернете увагу на властивість Checked, що використовується в ситуаціях, коли необхідно надати користувачеві можливість перемикання параметрів додатку. Незабаром воно буде розглянуто детально, а поки додайте в меню My Menu новий пункт з написом ВеSFormal і значенням підказки "Toggle formalities" (Формальний перемикач) (без лапок). Тепер перемістите даний елемент вище за елемент Say Hello, 1тобы він став першим пунктом меню. Потім зміните назву меню My Menu на Speak. 1ля цього можна скористатися діалоговим вікном Properties (щоб змінити значення войства Caption) або просто клацнути на відповідному меню і набрати текст fiSpeafc.

Ще декілька зауважень з приводу ідентифікаторів. Спливаючі меню ідентифікаторів не мають, Це викликано тим, що ідентифікатори використовуються тільки для зв'язку пунктів меню з кодом відповідного обробника, а оскільки клацання на спливаючому меню приводить тільки до відображення пунктів, що містяться в нім, обробник йому не потрібний. Отже, і в ідентифікаторі ніякої потреби не немає.

Звернете увагу також на наступну особливість. Коли пункт меню створюється, середовище розробки Visual Studio автоматично формує його ідентифікатор, використовуючи для цього підписи меню і самого пункту. Але якщо підпис елементу меню буде змінений, то Visual Studio не буде ні автоматично створювати новий пункт, ні змінювати ідентифікатор перейменованого. Тому в даному випадку ідентифікатори пунктів меню I D_MYMENU__BEFORMAL і D_MYMENU_SAY_HELLO доведеться змінювати на ID_SPEAK_BEFOBMAL І ID_SPEAK_S AY HELLO ручну, за допомогою діалогового вікна Properties. Більшість розробників зовсім не хвилюються з приводу цієї проблеми, оскільки на працездатність коди вона ніяк е впливає. Але як буде викладено в наступному розділі, при використанні майстра для створення обробників подій пунктів меню, в їх імена за умовчанням буде доданий ідентифікатор меню. Отже, пунктам меню бажано привласнювати правильні ідентифікатори, це забезпечить "автоматичне" документування і допоможе не заплутатися в коді

Остання тема, яку залишилося вивчити на даний момент, — можливість відкрити проглянути початковий код файлу ресурсу. Цей код завжди розташовується у файлі з розширенням .rс і ім'ям, співпадаючим з назвою проекту. Отже, в даному випадку файл ресурсу називатиметься SDIMenus .гс. Спроба відкрити цей файл за допомогою пункту Open меню File приведе до завантаження його вмісту у вікно Resource View. Щоб відкрити файл ресурсу подібно до будь-якого іншого файлу, необхідно виконати наступні дії. Спочатку, меню File виберіть пункт Open, а коли з'явиться діалогове вікно Open file (Відкриття файлу) виберіть файл ресурсу. Уважно розглянувши кнопку Open можна відмітити, що це насправді дві кнопки в одній. Кнопка, розташована справа, дозволяє вибрати, як (менно необхідно відкрити файл. Після клацання на цій кнопці і вибору параметра Open With (Відкрити як) з'явиться діалогове вікно Open With

 


 

А также другие работы, которые могут Вас заинтересовать

1576. Бойова служба варт з охорони лікувальних закладів під час епідемій 491.94 KB
  Завдання, які виконують внутрішні війська щодо забезпечення карантинних заходів у районі надзвичайного стану. Організація дій підрозділів внутрішніх військ для забезпечення проведення карантинних заходів у районі надзвичайного стану. Бойова служба варт з охорони лікувальних закладів під час епідемій.
1577. Схемотехника аналоговых электронных устройств 201.68 KB
  Усилитель низкой частоты для телефонной системы связи. Усилитель низкой частоты для проводной телефонной связи. Усилитель высокой частоты для входного блока приемника. Транзисторный двухчастотный усилитель высокой частоты. УВЧ для портативного приемника ЧМ сигналов.
1578. Синтез плоских кулачковых механизмов 119.55 KB
  Построение кинематических диаграмм графическим методом. Синтез кулачкового механизма с роликовым толкателем. Синтез кулачкового механизма с тарельчатым толкателем. Построение зубчатого зацепления. Определение кинематических характеристик всех звеньев. Построение и анализ диаграммы Виттенбауэра. Силовой расчет для рычажно-шарнирного механизма.
1579. Оцінка судової діяльності Приморського районного суду міста Маріуполя 79.85 KB
  Основні засади судочинства в Україні. Порядок призначення (обрання) суддів до місцевого суду. Повноваження місцевих судів. Обрання, атестація та дисциплінарна відповідальність суддів. Правовий і соціальний захист суддів.
1580. Анализ деятельности автотранспортного предприятия Речицкое межраенное АТП 222.83 KB
  Структурная схема управления на предприятии. Обеспечения предприятия тепловой энергией водой и электроэнергией. Требования по охране труда перед началом работы. Организация на предприятии охраны окружающей среды. Должностная инструкция руководителей технических служб.
1581. Розрахунок стержньового стрічкового трансформатора з повітряним охолодженням 78.69 KB
  Вибираємо марку електротехнічної сталі. Для електротехнічної сталі основними номінальними характеристиками є: питомі втрати і магнітні значення. Визначаємо кількість витків первинної і вторинної обмоток. Визначаємо енергетичні характеристики трансформатора.
1582. Проектування жіночих черевиків на блискавці на середньому каблуці на байковій підкладці 79.4 KB
  У курсовому проекті ми використовуємо копіювально-графічну методику проектування. Проектування деталей взуття за цією методикою включає такі етапи: встановлення умовної розгортки колодки в осі координат, розрахунок і нанесення базисних ліній.
1583. Проектирование жилого дома с фасадным зданием 107.7 KB
  В данном курсовом проекте необходимо запроектировать жилой дом. В состав графических работ входят: фасад гражданского здания М 1: 200, план гражданского здания М 1:200, продольный и поперечный разрезы М 1:200, схема плит покрытий и фундаменов М 1:200.
1584. Гонадальные гормоны и их действие у самок разных видов 20.32 KB
  Половой сезон-период, в течении которого проявляется или более напряженно протекает половая жизнь. Он обычно бывает связан с временем года, видовыми особенностями животного.