C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 3.13.1 - Обработка сообщения WM_INITMENUPOPUP / Буфер обмена / Win32 API

3.13.1 - Обработка сообщения WM_INITMENUPOPUP

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

Ниже следует выбирающая (case) структура WM_INITMENUPOPUP для прикладной программы, которая называется Меткой (Label).

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

Функция InitMenu определяется, как указано ниже.

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);
		}
	}
}

| |
Автор Владимир Соковиков.
[AD]