Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
15-1157752849
Tar[OFF]
2006-09-09 02:00
2006.10.01
Web Programming


5-1138991113
Glex
2006-02-03 21:25
2006.10.01
Универсальная кнопка <i>(совместная разработка)</i>


15-1157446949
Skier
2006-09-05 13:02
2006.10.01
9/11


2-1158087167
ukku
2006-09-12 22:52
2006.10.01
Свойство-массив как основное свойство объекта


15-1157880411
OSokin
2006-09-10 13:26
2006.10.01
Дос или винда?