Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 117
от 28.08.2005, 20:44

Администратор:Калашников О.А.
В рассылке:Подписчиков: 253, Экспертов: 27
В номере:Вопросов: 1, Ответов: 2


Вопрос № 25223: Здравствуйте. Извините, если задаю банальный вопрос, но как какому-либо элементу добавить всплывающее меню. Спасибо....

Вопрос № 25.223
Здравствуйте.
Извините, если задаю банальный вопрос, но как какому-либо элементу добавить всплывающее меню.
Спасибо.
Отправлен: 23.08.2005, 20:41
Вопрос задал: Ivaan (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ddeedd
Здравствуйте, Ivaan!

Если пишете на дельфе или на билдере, то у каждого компонента есть свойство PopupMenu, если вам нужно все сделать через WinAPI, то:

Когда-то я помнил что-то более рульное, но забыл.
Можно сделать так:

Получить старый WindowProc окна элемента, поставить новый, который будет по событию WM_RBUTTONDOWN делать TrackPopupMenu, потом вызывать старый - см.приложение

hwnd - хэндлер окна вашего элемента.
hMenu - хэндлер вашего всплывающего меню.

Приложение:

Ответ отправил: Ddeedd (статус: 4-ый класс)
Отправлен: 23.08.2005, 21:37

Отвечает: Raptor1
Здравствуйте, Ivaan!
Для MFC dialog
1. Создать переменную
CToolTipCtrl m_ToolTip;

2. В OnInitDialog написать
m_ToolTip.Create (this);
m_ToolTip.Activate (TRUE);
CWnd* pWnd = GetWindow (GW_CHILD);
while (pWnd)
{
int nID = pWnd->GetDlgCtrlID ();
if (nID != -1)
m_ToolTip.AddTool (pWnd, pWnd->GetDlgCtrlID ());
pWnd = pWnd->GetWindow (GW_HWNDNEXT);
}

3. В PreTranslateMessage помести
m_ToolTip.RelayEvent(pMsg);

4. Для каждого элемента создать строку в ресурсах с тем же ID
Ответ отправил: Raptor1 (статус: 6-ой класс)
Отправлен: 24.08.2005, 00:00


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться
Вспомнить пароль

В избранное