На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Processing the WM_INITMENUPOPUP Message



Not all clipboard commands are available to the user at any given time. An application should process the WM_INITMENUPOPUP message to enable the menu items for available commands and disable unavailable commands.

Following is the WM_INITMENUPOPUP case for an application named Label.

case WM_INITMENUPOPUP:
InitMenu((HMENU) wParam);
break;


The InitMenu function is defined as follows.

void WINAPI InitMenu(HMENU hmenu)
{
int cMenuItems = GetMenuItemCount(hmenu);
int nPos;
UINT id;
UINT fuFlags;
PLABELBOX pbox = (hwndSelected == NULL) ? NULL :
(PLABELBOX) GetWindowLong(hwndSelected, 0);

for (nPos = 0; nPos < cMenuItems; nPos++)
{
id = GetMenuItemID(hmenu, nPos);

switch (id)
{
case IDM_CUT:
case IDM_COPY:
case IDM_DELETE:

if (pbox == NULL || !pbox->fSelected)
fuFlags = MF_BYCOMMAND | MF_GRAYED;
else if (pbox->fEdit)
fuFlags = (id != IDM_DELETE && pbox->ichSel
== pbox->ichCaret) ?
MF_BYCOMMAND | MF_GRAYED :
MF_BYCOMMAND | MF_ENABLED;
else
fuFlags = MF_BYCOMMAND | MF_ENABLED;

EnableMenuItem(hmenu, id, fuFlags);

break;

case IDM_PASTE:
if (pbox != NULL && pbox->fEdit)
EnableMenuItem(hmenu, id,
IsClipboardFormatAvailable(CF_TEXT) ?
MF_BYCOMMAND | MF_ENABLED :
MF_BYCOMMAND | MF_GRAYED
);
else
EnableMenuItem(hmenu, id,
IsClipboardFormatAvailable(

uLabelFormat) ?
MF_BYCOMMAND | MF_ENABLED :
MF_BYCOMMAND | MF_GRAYED
);

}
}
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Обработка Сообщения WM_INITMENUPOPUP



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

Следующее является футляром WM_INITMENUPOPUP для приложения назвавшего Этикетку.

случай WM_INITMENUPOPUP:
InitMenu((HMENU) wParam);
прерывание;


Функция InitMenu определяется следующим образом.

пустота WINAPI InitMenu(HMENU hmenu)
{
int cMenuItems = GetMenuItemCount(hmenu);
int nPos;
id UINT;
UINT fuFlags;
PLABELBOX pbox = (hwndSelected == НЕДЕЙСТВИТЕЛЬНЫМ)? НЕДЕЙСТВИТЕЛЬНЫЙ : (PLABELBOX) GetWindowLong(hwndSelected, 0);

для (nPos = 0; nPos < cMenuItems; nPos++)
{
id = GetMenuItemID(hmenu, nPos);

ключ (id)
{
случай IDM_CUT: случай IDM_COPY: случай IDM_DELETE:

если (pbox == НЕДЕЙСТВИТЕЛЬНЫЙ || !pbox->fSelected) fuFlags = MF_BYCOMMAND | MF_GRAYED;
еще если (pbox->fEdit) fuFlags = (id != IDM_DELETE && pbox->ichSel == pbox->ichCaret)?
MF_BYCOMMAND | MF_GRAYED : MF_BYCOMMAND | MF_ENABLED;
еще
fuFlags = MF_BYCOMMAND | MF_ENABLED;

EnableMenuItem(hmenu, id, fuFlags);

прерывание;

случай IDM_PASTE: если (pbox != НЕДЕЙСТВИТЕЛЬНЫЙ && pbox->fEdit) EnableMenuItem(hmenu, id, IsClipboardFormatAvailable(CF_TEXT)?
MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED
);
еще
EnableMenuItem(hmenu, id, IsClipboardFormatAvailable(

uLabelFormat)?
MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED
);

}
}
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz