Головне меню програми

 

В усіх програмах меню розташовується у верхній частині вікна під заголовком програми. Елементи меню призначені для виконання певних команд. Меню, яке розташоване під смугою заголовка вікна, називається головним меню додатку.

Процес створення меню складається із трьох етапів [4,8]:

- створення шаблона меню;

- підключення ресурсу меню до головної програми;

- обробка повідомлень від команд меню.

Створення шаблона меню відбувається добавленням нового ресурсу в пункті меню Edit à Add Resource. При добавленні нового меню воно добавляться в пункт Menu на вкладці Resource View – Mandro[10].

На рис. 2 зображено діалогове вікно Add Resource і вкладка Resource View – Mandro.

 

Рисунок 2 – Діалогове вікно Add Resource і вкладка Resource View – Mandro


Після добавлення нового меню, йому присвоюється ідентифікатор IDR_MAINFRAME і мова оформлення меню [Английский(США)], оскільки згідно з індивідуальним завданням пункти меню на англійській мові.

Акселератор (клавіша виклику) – повідомляє користувача, що замість виклику меню можна викликати команду за допомогою акселератора(«гаряча клавіша»).

На рис. 3 зображено створений шаблон меню згідно з завданням в індивідуальному завданні.

 

Рисунок 3 – Візуальний шаблон меню

 

Після візуального створення шаблону меню кожен його пункт отримує певні атрибути. Зовнішній вигляд вікна властивостей, що визначає атрибути, приведений на рис. 4.

 

Рисунок 4 – Атрибути меню в вікні властивостей


Підключення меню в програму базується на використанні методу Create () класу CFrameWnd, який створює головне вікно програми. В цьому методі можна вказати спеціальний макрос MAKEINTRESOURCE, аргументом якого буде ідентифікатор підключаємого ресурсу меню. В результаті отримаємо:

CMyFrameWin::CMyFrameWin()

Create(NULL,"Курсова 2KС-06", WS_OVERLAPPEDWINDOW, rectDefault, NULL, MAKEINTRESOURCE(IDR_MAINFRAME));

Ідентифікатори меню та всіх пунктів меню мають бути представлені в заголовочному файлі ресурсів Resource.h:

#define IDR_MAINFRAME 128

#define ID_ RENAME 40002

#define ID_RUN 40003

#define ID_RESULT 40021

Після запуску на виконання в верхній частині клієнтської області вікна можна буде побачити створене меню.

Тепер вже можна перейти до третього етапу створення меню. Обробку повідомлень від команд меню в головному програмному файлі проекту необхідно виконати в такій послідовності.

1) В класі вікна з рамкою CMyFrameWnd оголосити функції-обробники всіх пунктів меню;

2) Включити в карту повідомлень MESSAGE_MAP макроси, які зв’язують ідентифікатори кожного пункту меню з функцією-обробником;

3) Написати всі функції-обробники, які були вказані в класі вікна з рамкою CMyFrameWnd та карті повідомлень MESSAGE_MAP [1].

class CMyFrameWin:public CFrameWnd

public:

CMyFrameWin();

CMenu PopupMenu;

protected:

CStatusBar m_wndStatusBar;

CToolBar m_wndToolBar;

HICON m_hIcon;

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnOpen();

afx_msg void OnHelp();

DECLARE_MESSAGE_MAP();

BEGIN_MESSAGE_MAP(CMyFrameWin, CFrameWnd)

ON_WM_CREATE()

ON_COMMAND(ID_OPEN,OnOpen)

ON_COMMAND(ID_HELP1,OnHelp)

END_MESSAGE_MAP();

void CMyFrameWin::OnRun()

void CMyFrameWin::OnAbout()



Таблиця акселератора

 

Для прискорення доступу до елементів меню за допомогою клавіатури, а також для виклику потрібних функцій, не пов'язаних з меню, в Windows використовується таблиця акселераторів. Вона знаходиться в ресурсах додатку і визначає відповідність між акселератором і значенням параметра WM_COMMAND, що передається у функцію, при натисненні комбінації клавіш[10].

Щоб комбінація клавіш стала працювати як акселератор, вона повинна бути описана в таблиці акселераторів і додаток повинен завантажити таблицю акселераторів з ресурсів.

Створення таблиці відбувається добавленням нового ресурсу Accelerator в пункті меню Edit à Add Resource, як показано на рис. 2.

Для завантаження таблиці акселераторів використовується функція:

this->LoadAccelTable(MAKEINTRESOURCE(IDR_MAINFRAME));

Зовнішній вигляд вікна властивостей акселератора показано на рис. 5.

 

Рисунок 5 – Вікно властивостей акселератора для меню About

 

По замовчуванню, коли клавіша акселератора відповідає пункту меню, система виділяє цей пункт меню.

Зовнішній вигляд таблиці акселератора зображено на рис. 6.

 

Рисунок 6 – Таблиця акселератора для всієї програми


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: