Подробности - Описание меню в ресурсах

Прототип: Имя меню MENU [Опции] {Элементы меню}

Имя меню:
Обозначает имя меню. (Это может быть просто целое число, идентифицирующее меню).

MENU - Этот оператор указывает компилятору ресурсов на то, что создается меню.

Опции:
DISCARABLE - Меню может быть удалено из памяти, если оно больше не используется.
FIXED - Меню постоянно находится в памяти.
LOADONCALL - Меню загружается при обращении.
MOVEABLE - Меню может быть перемещено в другую область памяти.
PRELOAD - Меню загружается при запуске программы.
Элементы меню:
При создании меню могут использоваться два типа операторов: MENUITEM - Определяет конечный пункт меню. POPUP - Определяет выпадающее меню, которое может содержать подпункты, также задаваемые с помощью MENUITEM и POPUP

Общий вид операторов следующий:

MENUITEM "ItemName", MenuID [Опции]
POPUP "PopupName", [Опции]

ItemName - Задает название пункта меню, например File или Help.
MenuID - Это уникальное целое значение, которое связано с пунктом меню и посылается приложению при выборе данного пункта. (Обычно эти значения содержатся в виде констант в библиотечном файле, который затем включается как в программный файл, так и в RC-файл ресурсов.
PopupName - Определяет название выпадающего меню.

Опции используемые с операторами MENUITEM и POPUP

CHECKED
РЯДОМ С НАЗВАНИЕМ ПУНКТА МЕНЮ МОЖЕТ СТОЯТЬ МЕТКА ВЫБОРА. (НЕ ИСПОЛЬЗУЕТСЯ ДЛЯ МЕНЮ ВЕРХНЕГО УРОВНЯ.)
GRAYED
Название пункта меню выделяется серым цветом и не может быть выбрано.
HELP
Может быть связана с коммандой вызова помощи. Применяется с MENUITEM.
INACTIVE
Пункт меню не может быть выбран.
MENUBARBREAK
Если используется для меню верхнего уровня, то название пункта будет записано с новой строки. Если используется для выпадающих меню, то название пункта будет размещено в новом столбце. В этом случае оно будет отделено чертой.
MENUBREAK
То же, что и MENUBARBREAK, но разделительная черта не используется.

Пример создания меню: MENU1.RC

#include "id.h"	
MYMENU MENU
{
	POPUP "&One"
	{		
		MENUITEM "&Alpha", IDM_ALPHA
		MENUITEM "&Beta", IDM_BETA
	}	
	POPUP "&Two"
	{
		MENUITEM "&Gamma", IDM_GAMMA
		POPUP "&Delta"
		{	
			MENUITEM "&Epsillon", IDM_EPSILON	
			MENUITEM "&Zeta", IDM_ZETA	
		}	
		MENUITEM "&Eta", IDM_ETA
		MENUITEM "&Theta", IDM_THETA	
	}	
	MENUITEM "&Help", IDM_HELP
}

// ID.H
#define IDM_ALPHA	100
#define IDM_BETA	101
#define IDM_GAMMA	102
#define IDM_DELTA	103
#define IDM_EPSILON	104
#define IDM_ZETA	105
#define IDM_ETA	106
#define IDM_THETA	107
#define IDM_HELP	108

Когда меню определено, его можно включить в программу, указывая имя меню при создании окна. В частности, необходимо передать указатель на его имя в последнем оргументе функции Create().

Пример:

Create(NULL, "Пример меню",WS_OVERLAPPEDWINDOW, rectDefault, NULL,"MYMENU");

Остальное за обработчиком сообщений WM_COMMAND.

Материал прислал Dmitry (astra@mail.iks.ru).


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 18.01.2000