Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизPostMessage(<окно>, wm_LButtonDown, 0, <координаты>)-не пашит :( Найти похожие ветки
← →
Murava © (2006-09-12 23:50) [0]Помогите!!! Хочу нажать левую кнопку мыши, пишу:
PostMessage(<окно>, wm_LButtonDown, 0, <координаты>)
Если нажимаю на форме, то все отлично работает, но если координаты указуют на кнопку на этой форме, то ничего не происходит(события при OnMouseDown на форме выполняюся, а на кнопки НЕТ). Что делать??? Подскажите.
И еще: можно ли каким-то образом получить объект самой кнопки??(или другого объекта на окне)
← →
Джо © (2006-09-13 00:02) [1]
PostMessage(Handle,wm_LButtonDown,0,Coords);
PostMessage(Handle,WM_LBUTTONUP,0,Coords);
А лучше код покажи, что ты там делаешь.
> И еще: можно ли каким-то образом получить объект самой кнопки?
> ?(или другого объекта на окне)
О каком "объекте" ты говоришь в контексте WinApi?
← →
murava © (2006-09-13 00:50) [2]procedure TForm1.Button1Click(Sender: TObject);
var h:hwnd;
begin
h:=FindWindow(nil, "Form1");
PostMessage(h, wm_LButtonDown, 0, 100*65536+100);
end;
вообщем это и есть весь код. На форме находится две кнопки: Button1 и кнопка, которая лежит на координатах (10, 10). Когда я убирал вторую кнопку и обрабатовал события ОnMouseDown на форме с координатами (10, 10), то событие отлично выполнялось, а вот когда я сделал аналогисные действия на кнопке, то... ничего не происходит
← →
murava © (2006-09-13 00:57) [3]To Джо:
Еще я заметил, что когда я нажимаю(вручную левой кнопкой мыши) на Button1, а потом пытаюсь нажать(тоже с помощью левой кнопки мышы) на вторую кнопку (Button2), то она (Button2) не становилась активной и не нажималась(как будто заблокирована), а вот после еще одного нажатия уже выполнялось события OnMouseDown для Button2... Может подскажешь из-за чего это может происходить. Возможно это и есть причиной того, что не выполняется PostMessage(...)??
← →
Murava © (2006-09-13 01:45) [4]p.s.
Напишу точнее:
procedure TForm1.Button1Click(Sender: TObject);
var
i:longbool;
begin
h:=FindWindow(nil, "Form1);
i:=PostMessage (h, wm_LButtonDown, 0, 100*65536+100);
if i then showmessage("1");
i:=PostMessage(h, wm_LButtonUp, 0, 100*65536+100);
if i then showmessage("2");
end;
procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage("ButtonMouseDown");
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage("FormMouseDown");
end;
когда кнопка НЕ лежит на (100, 100), то-есть выполняется FormMouseDown, то выводятся сообщения "FormMouseDown", "1", "2". Самое главное, что когда кнопка покрывает (100, 100), то все-равно выводятся "FormMouseDown", "1", "2". То-есть "нажимается" именно форма, а не кнопка. ПОЧЕМУ??? И как нажать кнопку???
P.P.S. Насчет "неактивной кнопки" я понял. Просто я сначала посылал wm_LButtonDown, а вот про wm_LButtonUp забыл :). Но все-равно должно ж выполняться или Button2MouseDown или хотя б Button2Click...
← →
Ketmar © (2006-09-13 01:53) [5]> [4] Murava © (13.09.06 01:45)
кнопка -- это тоже окошко. удивись. с чего бы ей "нажиматься", если сообщение посылается вовсе и не ей?
← →
Murava © (2006-09-13 09:52) [6]To Ketmar:
тогда как мне получить это окошко(пусть это будет кнопка с координатами 100, 100), если у меня есть объект основного окна?
← →
Сергей М. © (2006-09-13 12:41) [7]WindowFromPoint
← →
GrayFace © (2006-09-13 15:18) [8]Button1.Handle
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c