Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Існує два способи визначення меню. Один з них має на увазі програмне створення, що дозволяє динамічно формувати необхідні меню даних, що виникають під час виконання. Але найчастіше застосовують інший спосіб, що має на увазі створення меню заздалегідь, у вигляді ресурсу меню. А зараз створимо демонстраційний проект 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

 




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


Дата добавления: 2014-01-07; Просмотров: 565; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.