Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1158134011
Stexen
2006-09-13 11:53
2006.10.01
Алгоритм Питера Гутмана


2-1158085540
Kiril
2006-09-12 22:25
2006.10.01
Условный путь?


3-1154079824
Vir
2006-07-28 13:43
2006.10.01
ADO Events


15-1158053969
WELLiON
2006-09-12 13:39
2006.10.01
Печать в PDF.


15-1158159660
vain
2006-09-13 19:01
2006.10.01
TTB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский