Операционные системы. Кручинин А.Ю. - 24 стр.

UptoLike

Составители: 

24
Функция SetMenu связывает новое меню с заданным окном.
Параметры:
hWnd идентифицирует окно, с которым должно быть связано меню.
hMenu идентифицирует новое меню. Если этот параметр имеет значение NULL,
текущее меню окна удаляется.
Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения не
ноль. Если функция не выполняет задачу, величина возвращаемого значения ноль.
Чтобы получать расширенные данные об ошибках, вызовите GetLastError.
В листинге 5 представлен участок программного кода динамического
создания меню.
//Создание меню
int i;
HMenu=CreateMenu();
if (HMenu==NULL) return 1;
//Добавить "File"
i=AppendMenu(HMenu,MF_POPUP,M_FILE,"File");
if (i==0) return 1;
//Создать подменю "File"
HMENU h;
h=CreatePopupMenu();
i=AppendMenu(h,MFT_STRING,M_FILE1,"Новый");
if (i==0) return 1;
i=AppendMenu(h,MFT_STRING,M_FILE2,"Выход");
if (i==0) return 1;
//Добавить к меню
MENUITEMINFO mi;
mi.cbSize=sizeof(mi);
mi.fMask=MIIM_SUBMENU;
mi.hSubMenu=h;
i=SetMenuItemInfo(HMenu,M_FILE,false,&mi);
if (i==0) return 1;
//Добавление меню к окну
i=SetMenu(hWnd,HMenu);
if (i==0) return 1;
Листинг 5 Динамическое добавление меню к окну
Создание меню должно происходить во время обработки сообщения
WM_CREATE. В программе hWnd это дескриптор окна (HWND). M_FILE,
M_FILE1, M_FILE2 и HMenu должны быть объявлены ранее, например как
показано в листинге 6.
#define M_FILE 10001
      Функция SetMenu связывает новое меню с заданным окном.
      Параметры:
hWnd – идентифицирует окно, с которым должно быть связано меню.
hMenu – идентифицирует новое меню. Если этот параметр имеет значение NULL,
текущее меню окна удаляется.
      Возвращаемые значения
      Если функция завершается успешно, величина возвращаемого значения – не
ноль. Если функция не выполняет задачу, величина возвращаемого значения – ноль.
Чтобы получать расширенные данные об ошибках, вызовите GetLastError.

     В листинге 5 представлен участок программного кода динамического
создания меню.

//Создание меню
int i;
HMenu=CreateMenu();
if (HMenu==NULL) return 1;

//Добавить "File"
i=AppendMenu(HMenu,MF_POPUP,M_FILE,"File");
if (i==0) return 1;

//Создать подменю "File"
HMENU h;
h=CreatePopupMenu();
i=AppendMenu(h,MFT_STRING,M_FILE1,"Новый");
if (i==0) return 1;
i=AppendMenu(h,MFT_STRING,M_FILE2,"Выход");
if (i==0) return 1;

//Добавить к меню
MENUITEMINFO mi;
mi.cbSize=sizeof(mi);
mi.fMask=MIIM_SUBMENU;
mi.hSubMenu=h;
i=SetMenuItemInfo(HMenu,M_FILE,false,&mi);
if (i==0) return 1;

//Добавление меню к окну
i=SetMenu(hWnd,HMenu);
if (i==0) return 1;
                 Листинг 5 – Динамическое добавление меню к окну

     Создание меню должно происходить во время обработки сообщения
WM_CREATE. В программе hWnd – это дескриптор окна (HWND). M_FILE,
M_FILE1, M_FILE2 и HMenu должны быть объявлены ранее, например как
показано в листинге 6.

#define M_FILE     10001

                                                                            24