TForm1::TForm1 () //конструктор формы
{
// Эмуляция щелчка мышью по кнопке
if (this->Button1->OnClick) // Проверка наличия обработчика
this->Button1->OnClick (this->Button1); // Вызов обработчика
}
Послать самому себе сообщение, мол, выбран пункт меню
Логичнее всего, на мой взгляд, использовать для этого функцию PostMessage(). Но есть одна тонкость.
При выборе какого-либо пункта меню окну приходит сообщение WM_COMMAND с параметром wParam = WM_USER + <константа>. Константа, понятное дело, для каждого пункта меню своя и выбирается софтиной меню-дизайнера по каким-то только ей известным соображениям, причём в дизайнере меню её, как я понимаю, изменить нельзя.
Иными словами, моя задача сводится к тому, чтобы из своей программы узнать, какое значение wParam у нужного мне пункта меню и выполнить соотвествующий PostMessage.
Уважаемые знатоки, внимание, вопрос: каким образом узнать из своей программы, какое значение wParam соответствует данному пункту меню?
Заранее благодарен.
Почему нельзя просто запустить эту функцию? Я всегда так делаю :)
Код:
Конечно, по кнопке "щёлкнуть" можно куда проще - методом Click() для TButton, но данный способ позволяет эмулировать всё
Цитата: Borgir
А к чему все так усложнять? Ведь при выборе какого-либо пункта меню выполняется соответствующая функция. Например если пункты меня создавать по-умолчанию и не менять их названия, то они создаются с именами N1, N2 и тд. Соответсвутющие функции получаются N1Click(), N2Click и тд.
Почему нельзя просто запустить эту функцию? Я всегда так делаю :)
Почему нельзя просто запустить эту функцию? Я всегда так делаю :)
Можно. Но по ряду причин хочется именно так, как описано в вопросе.
А то, что мне надо, выполняют функции GetMenuItemId() и GetMenuItemInfo(), если кому интересно.