HMENU -> HWND
От: deemer  
Дата: 31.01.02 13:51
Оценка:
Есть ли возможность получить хэндл окна контекстного меню (popup menu)?
Мне это нужно для создания CompatibleBitmap, совместимого с DC этого контекстного меню...
Re: HMENU -> HWND
От: KaSA  
Дата: 31.01.02 13:57
Оценка:
Здравствуйте deemer, Вы писали:

D>Есть ли возможность получить хэндл окна контекстного меню (popup menu)?

Нет, его не существует.

D>Мне это нужно для создания CompatibleBitmap, совместимого с DC этого контекстного меню...


можно так:

HDC dc = ::GetDC(NULL); // контекст рабочего стола
hBmp = ::CreateCompatibleBitmap(dc, ...);
::ReleaseDC(NULL, dc);
Re[2]: HMENU -> HWND
От: deemer  
Дата: 31.01.02 14:07
Оценка:
спасибо, но...

D>>Есть ли возможность получить хэндл окна контекстного меню (popup menu)?

KSA>Нет, его не существует.

предположим его не существует...
чем же тогда является контекстное меню, если не окном?
Re[3]: HMENU -> HWND
От: Кодт Россия  
Дата: 31.01.02 14:33
Оценка:
Здравствуйте deemer, Вы писали:

D>спасибо, но...


D>>>Есть ли возможность получить хэндл окна контекстного меню (popup menu)?

KSA>>Нет, его не существует.

D>предположим его не существует...

D>чем же тогда является контекстное меню, если не окном?

Меню — это окно, но изловить его — почти дохлый номер.
При известной ловкости можно проанализировать его, например, Spy++, или своей программой (которая мониторит окна), или повесив хук...
(я это делал успешно).

Но овчинка, как правило, выделки не стоит. Если нужно что-то нарисовать в меню, то нужно объявить элемент меню как MFT_OWNERDRAW (см. ::InsertMenuItem(), MENUITEMINFO)
и в программе обрабатывать WM_MEASUREITEM & WM_DRAWITEM.
Кстати, WM_DRAWITEM передает DRAWITEMSTRUCT, в котором есть контекст меню (hDC).
Перекуём баги на фичи!
Re: HMENU -> HWND
От: Vodka  
Дата: 31.01.02 17:16
Оценка:
Здравствуйте deemer, Вы писали:

D>Есть ли возможность получить хэндл окна контекстного меню (popup menu)?

http://www.rsdn.ru/forum/message.asp?mid=20859
Автор: Serge
Дата: 10.01.02
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.