Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Нажатие пункта меню в другом окне  (Прочитано 5902 раз)
0 Пользователей и 1 Гость смотрят эту тему.
pupk1n
Гость
« : 12-03-2008 10:34 » 

Хендл меню ищу функцией GetMenu(), ну потом GetSubMenu, для нажатия исполюзую PostMessage(hdl, WM_COMMAND, menuid,0);  SendMessage тоже не работает=( В чем может быть причина?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #1 : 12-03-2008 10:48 » 

нужно посылать WM_COMMAND окну, которому принадлежит меню,
попробуй
PostMessage(hParentwnd,commID,0);

где hParentwnd-хендл родительского окна, commID-команда меню
« Последнее редактирование: 12-03-2008 12:13 от Алексей1153++ » Записан

pupk1n
Гость
« Ответ #2 : 12-03-2008 11:30 » 

commID, это id пункта меню или нет?

postmessage(hndl, WM_COMMAND, menuID, 0);
hndl - хендл сабменю, menuID -id пункта меню. хз но что-то не получаеться

или просто ты говоришь что надо делать тоже самое, только посылать самому окну программы а не меню?
« Последнее редактирование: 12-03-2008 11:33 от pupk1n » Записан
pupk1n
Гость
« Ответ #3 : 12-03-2008 11:36 » 

Алексей1153++, спасибо! ты прав, заработало.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 12-03-2008 11:43 » 

pupk1n, как всё запущено...
WM_COMMAND - это собщение получает окно при отрабатывании контрола с ID.

Если ты действительно хочешь нажать программно (такое иногда бывает необходимо в визуальных тестовых программах), то смотри в сторону WM_LBUTTONDOWN/WM_LBUTTONUP, или ещё проще VK_RETURN, только тебе сначала установить фокус на нужном пункте меню.

А что ты вобще хочешь сделать?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #5 : 12-03-2008 12:14 » 

 pupk1n, ой, почему то у меня там запятая пропала - подправил ) Вижу, ты уже сам разобрался вроде
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 12-03-2008 13:02 » 

Если действительно это решение устраивает, то поправочка:

нужно посылать WM_COMMAND окну, которому принадлежит меню

Посылать нужно окну не которому принадлежит меню (обычно это MainFrame), а окну, в карту сообщений которого занесён обработчик команды ID, и которое в данный момент находится в фокусе, тк таких окон может быть несколько. Поэтому для тест-программ важно именно "нажимать" на пункт меню. Но это уже другая история.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines