При регистрации оконного класса в поле 1 pszCl assName структуры wc нужно указать идентификатор экземпляра меню. Для нашего примера это будет следующий оператор:

wc.lpszClassName -" IDR_MENU1":

Включение меню в окно приложения При выборе любого терминального пункта меню в оконную процедуру придет сообщение WM_COMMAND. Идентификатор выбранного пункта, то есть выполняемая команда, будет находиться в LOWORD(wParam). Таким образом, если необходимо, чтобы при выборе пунктов Import, Save, Table выполнялись функции Onlmportt), OnSave() и OnTable() соответственно, в функцию WndProc простейшего приложения можно включить фрагмент, который приведен в листинге 5.2.

Листинг 5.2

case WM_COMMAND:
switch ( LOWORD (wParam))
{
case IMP0RT:0nImport(); break; case SAVE: OnSaveO; break; case ID_TABLE: OnTable();break; }
break;

Чтобы не загромождать оконную процедуру, данный фрагмент удобно оформить в виде функции On_Menu(HWND.WPARAM.LPARAM) и вызывать ее по сообщению WM_COMMAND. Если в программе подключен заголовочный файл windowsx.h, можно использовать макрос HANDLE_MSG(hWnd. WM_COMMAND,On_Menu), предназначенный для вызова функции On_Menu() в момент получения сообщения WM_COMMAND.

Заметим, что команды IMPORT, SAVE, ID_TABLE после компиляции файла ресурсов остаются строками текста, а метки вариантов IMPORT, SAVE, IDJABLE в переключателе switch являются целыми числами.

При регистрации оконного класса меню идентифицируется строкой текста (IDR_MENU1), а пункты меню в операторе switch - целочисленными константами. Для определения констант, соответствующих названиям команд меню, создается заголовочный файл, пример которого приведен в листинге 5.3.

Листинг 5.3

#define IMPORT 40001 #define LOAD 40002 #define SAVE 40003 #define ID_CALC 40004 #define ID_GRAPH 40005 #define IDJTABLE 40006

Обычно этот файл называется resource.h. При помощи строки #i ncl ude "resource. h" он включается как в файл определения ресурсов, так и в модули с исходными текстами программы.

Поскольку для включения меню в приложение требуется произвести перечисленные изменения в коде проекта, в тексте книги не приводятся полные исходные тексты модулей. Их можно найти в проекте MenuMin.


⇐ Предыдущая| |Следующая ⇒