Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Всплывающие меню, Так как и где его обрабатывать 
V
    Опции темы
Rapalex
Дата 30.5.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Зная мфц рискну предположить что отоброжение меню делается несколькими способами.

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

Полазив по форуму заметил что все обрабатывают правый щелчёк мышки и там показывают свою менюшку. Также я знаю про сушществование функции CWnd::OnContextMenu. И тут я даже не знаю что мне делать, в смысле какой вариант правильней?

Но больше меня интересует: Есль ли ещё какие-нибудь способы работы со всплывающими подсказками?

Я не прошу програму написать, а прошу расказать фирософию работы со всплывающими менюшками.

Спасибо.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
zkv
Дата 30.5.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Rapalex @  30.5.2007,  10:17 Найти цитируемый пост)
Есль ли ещё какие-нибудь способы работы со всплывающими подсказками?

подсказки из другой степи smile

Цитата(Rapalex @  30.5.2007,  10:17 Найти цитируемый пост)
И хотелось бы чтоб командные сообщения сам бежали куда им надо и обработчик сомандного сообщения и не знал откуда пришло сообщение, из главно или всплывающего меню.

ему и так все равно smile

Цитата(Rapalex @  30.5.2007,  10:17 Найти цитируемый пост)
а прошу расказать фирософию работы со всплывающими менюшками.

да нечего рассказывать, делай в CWnd::OnContextMenu, или по WM_RBUTTONDOWN, или еще куда-нить, как больше нравится, сложностей нет никаких.
PM MAIL   Вверх
Rapalex
Дата 30.5.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Цитата(zkv @  30.5.2007,  10:38 Найти цитируемый пост)
подсказки из другой степи 

Сори оговорился, я имел ввиду меню.

Цитата(zkv @  30.5.2007,  10:38 Найти цитируемый пост)
ему и так все равно 

Я имелл вииду что коммандное сообщение само возникало.

А что касается самого меню: его что в ресурсах рисовать и как субменю извлекать. Полее красивого способа нет?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
zkv
Дата 30.5.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Rapalex @  30.5.2007,  14:21 Найти цитируемый пост)
Я имелл вииду что коммандное сообщение само возникало.

повторюсь, если вы обработали WM_COMMAND для определенного ID, то потом неважно, откуда именно этот ID пришлют - из главного меню, из тулбара, или из всплывающего меню. Обработчик для всех один.

Цитата(Rapalex @  30.5.2007,  14:21 Найти цитируемый пост)
А что касается самого меню: его что в ресурсах рисовать и как субменю извлекать.

угу, или использовать главное меню, и извлекать из него. Можно динамически создать, если по.. ковыряться охота.

Цитата(Rapalex @  30.5.2007,  14:21 Найти цитируемый пост)
Полее красивого способа нет? 

Куда уж красивее то? smile
PM MAIL   Вверх
Earnest
Дата 30.5.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Показывать контектсное меню лучше все-таки на WM_CONTEXTMENU. 
А чтобы команды шли привычным путем, нужно адресовать это меню главному окну, т.е. в TrackPopupMenu передать именно главное окно. Кстати, тогда и подсказки к меню в строке состояния правильно отображаться будут (если они есть), и disable\enable\check и прочая тоже будут работать так, как будно это пункты главного меню.


--------------------
...
PM   Вверх
Rapalex
Дата 7.6.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 6
Всего: 8



Сработало  smile сделал так:
Код

void CViewDetails::OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/)
{
    CMenu oMenu;
    oMenu.LoadMenu(IDR_MENU_CONTEXT);
    CMenu *poSubMenu = oMenu.GetSubMenu(0);

    POINT sPoint;
    GetCursorPos(&sPoint);

    poSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, sPoint.x, sPoint.y, AfxGetMainWnd());
}


Хоть так и не понял почему имено главному окну, поидее со всех видов сообщение к нему приходит.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
zkv
Дата 7.6.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



а зачем это:
Цитата(Rapalex @  7.6.2007,  15:59 Найти цитируемый пост)
    POINT sPoint;
    GetCursorPos(&sPoint);

точка ведь через список параметров приходит.

Цитата(Rapalex @  7.6.2007,  15:59 Найти цитируемый пост)
Хоть так и не понял почему имено главному окну

видимо по этому:
Цитата(Earnest @  30.5.2007,  17:42 Найти цитируемый пост)
Кстати, тогда и подсказки к меню в строке состояния правильно отображаться будут (если они есть), и disable\enable\check и прочая тоже будут работать так, как будно это пункты главного меню. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.