Определите, выпало ли меню - PullRequest
1 голос
/ 12 апреля 2009

Есть ли способ определить, выпало ли меню в интерфейсе win32? Что-то, что можно использовать так:

HMENU hMenu = GetMenu (hWnd);

HMENU hSubMenu = GetSubMenu (hMenu);

// Выпадает ли hSubMenu?

1 Ответ

2 голосов
/ 12 апреля 2009

Я не уверен, каким образом можно работать конкретно с HMENU, чтобы увидеть, отображается ли меню (и быстрое сканирование документов SDK платформы не показало ничего конкретного), но вы можете использовать GetMenuItemInfo функция для получения MENUITEMINFO структуры, относящейся к пункту меню, которому принадлежит выпадающий список. Если для элемента fState установлено значение MFS_HILITE, это должно указывать на то, что элемент выбран и подменю, скорее всего, открыто. Корректность с моей стороны не гарантирована, но с ней стоит поэкспериментировать.

Другой возможный вариант - использовать FindWindow с классом "# 32768", чтобы найти hWnd всех меню, которые могут быть открыты, и отправлять сообщение MN_GETHMENU в любое окно, которое вы найдете, чтобы получить HMENU и сравнить это к ожидаемому значению от GetSubMenu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...