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

Вниз

WH_MOUSE Где я ошибся?   Найти похожие ветки 

 
sosv   (2003-05-23 10:53) [0]

function MouseProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var AppWnd: HWND;
begin
if code = HC_ACTION then
begin
if (wParam = WM_LBUTTONUP) or (wParam = WM_NCLBUTTONUP) then
begin
AppWnd:=TMsg(Pointer(lParam)^).hwnd;
SendMessage(HWND_BROADCAST, WM_MYKEYHOOK, wParam, AppWnd);
end;
end;
Result:=CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;


 
_ALEXey_ ©   (2003-05-23 11:03) [1]

Чтобы отменить стандартную обработку сообщения, по-моему так:

function MouseProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var AppWnd: HWND;
begin
if code = HC_ACTION then
begin
if (wParam = WM_LBUTTONUP) or (wParam = WM_NCLBUTTONUP) then
begin
AppWnd:=TMsg(Pointer(lParam)^).hwnd;
SendMessage(HWND_BROADCAST, WM_MYKEYHOOK, wParam, AppWnd);
Result:= 1;
end
else Result:=CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;
Result:=CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;



Если после посылки своего сообщения все же нужно чтобы система еще и сама обработала сообщение мыши, так:

function MouseProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var AppWnd: HWND;
begin
if code = HC_ACTION then
begin
if (wParam = WM_LBUTTONUP) or (wParam = WM_NCLBUTTONUP) then
begin
AppWnd:=TMsg(Pointer(lParam)^).hwnd;
SendMessage(HWND_BROADCAST, WM_MYKEYHOOK, wParam, AppWnd);
Result:=CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;
end;
Result:=CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;


 
sosv   (2003-05-23 11:49) [2]

У меня раньше было вместо
AppWnd:=TMsg(Pointer(lParam)^).hwnd;
вот это
GetCursorPos(Pnt);
AppWnd:=WindowFromPoint( Pnt );

Работало, но с глюками.
Теперь вообще не работает.


 
_ALEXey_ ©   (2003-05-24 08:24) [3]

Так надо определить окно, которое получит это сообщение ?!?!
Тогда нужна еще переменная типа указатель на MOUSEHOOKSTRUCT:

var MHS: ^MOUSEHOOKSTRUCT;
.......
begin
.......
MHS:= Pointer(lParam);
AppWnd:= MHS^.HWND;
.......
end;


В SDK это достаточно хорошо описано (ключевое слово: MouseProc)


 
_ALEXey_ ©   (2003-05-24 08:32) [4]

Это почти тоже самое, но может поможет.



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
1-91711
Hatawa
2003-07-13 17:49
2003.07.28
Как сделать прям-к для выделения части картинки, чтобы она не...


3-91642
АТ
2003-07-04 16:29
2003.07.28
При переносе приложения c одной машины на др. исчез русский шрифт


14-91858
ataman
2003-07-10 20:08
2003.07.28
пожалуста поясните понятие WAKE UP сетевой карточки


14-91846
Крот
2003-07-11 06:36
2003.07.28
Рекомендую заглянуть


3-91626
Яндекс2
2003-07-04 11:39
2003.07.28
Как реализовать на FB выдачу р-тов порциями?