WINAPI: Нажать на ToolButton. Срочно Help
Необходимо программно нажать на определёную кнопку этого ToolBar.
Отдельное спасибо, за ответ с кодом Delphi
Цитата:
Originally posted by elan
Тебе нужно программно не нажать на кнопку, а вызвать обработчик нажатия определенной кнопки.
Для этого нужно передать сообщение окну, а в
окне определить код, который обработает данное сообщение.
Допустим Toolbar содержит 3 кнопки. Тогда
1. Нужно определить сообщение(глобальное):
const
SX_PUSH_BTN = WM_USER + 100;
2. Где-то в программе передать сообщение окну:
PostMessage(HWND, SX_PUSH_BTN1, 0, 0); //нажать первую кнопку
или
PostMessage(HWND, SX_PUSH_BTN1, 1, 0); //нажать вторую кнопку
3. В окне определить код обработки:
TForm1 = class(TForm)
.
.
.
private
procedure SXPushButton(var Msg: TMessage); message SX_PUSH_BTN
end;
procedure TForm1.SXPushButton(var Msg: TMessage);
begin
case Msg.WParam of
0: ... //вызвать обработчик первой кнопки
1: ... // -//- второй кнопки
else
... // -//- третьей кнопки
end;
end;
Когда-то я писал такой, и он работал, но учти,что я уже третий год не программирую на Delphi(:-).
Тебе нужно программно не нажать на кнопку, а вызвать обработчик нажатия определенной кнопки.
Для этого нужно передать сообщение окну, а в
окне определить код, который обработает данное сообщение.
Допустим Toolbar содержит 3 кнопки. Тогда
1. Нужно определить сообщение(глобальное):
const
SX_PUSH_BTN = WM_USER + 100;
2. Где-то в программе передать сообщение окну:
PostMessage(HWND, SX_PUSH_BTN1, 0, 0); //нажать первую кнопку
или
PostMessage(HWND, SX_PUSH_BTN1, 1, 0); //нажать вторую кнопку
3. В окне определить код обработки:
TForm1 = class(TForm)
.
.
.
private
procedure SXPushButton(var Msg: TMessage); message SX_PUSH_BTN
end;
procedure TForm1.SXPushButton(var Msg: TMessage);
begin
case Msg.WParam of
0: ... //вызвать обработчик первой кнопки
1: ... // -//- второй кнопки
else
... // -//- третьей кнопки
end;
end;
Когда-то я писал такой, и он работал, но учти,что я уже третий год не программирую на Delphi(:-).
А если это тулбар чужого окна?