|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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 ); } } }
|
|
|
|
| |