Проблема с вызовом функции...
От: pitomnik  
Дата: 22.12.02 15:15
Оценка:
Здравствуйте!

Прижеденный ниже код используется для отлавливания клика мыши во всей системе.
Хук ставится из EXE, написанного на VB.
Закомментированная строка посылает основному окну сообщения о каждом клике.
Однако, заманчиво делать простой вызов функции, находящейся в стандартном
модуле VB программы вместо сабклассинга. Тут появляется проблема.
Код работает только при кликание на своем окне. При переходе в другое перестает
(также и при возврате обратно в свое окно).

Где я ошибаюсь?

Спасибо.



typedef void (__stdcall *FUNCPTR)(long hWnd) ;

#pragma data_seg(".shared")
HHOOK m_hHook = 0 ;
HWND m_hOwner = 0 ;
FUNCPTR m_hCallback = 0 ;
#pragma data_seg()


LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
{
CallNextHookEx(m_hHook, nCode, wParam, lParam) ;
return 0 ;
}

if (nCode == HC_ACTION)
{
if (wParam == WM_LBUTTONUP || wParam == WM_NCLBUTTONUP)
{
m_hCallback(long(((MOUSEHOOKSTRUCT*) lParam)->hwnd)) ;
//PostMessage(m_hWnd, WM_USER + WM_LBUTTONUP, long(((MOUSEHOOKSTRUCT*) lParam)->hwnd), 0) ;
}
}

return CallNextHookEx(m_hHook, nCode, wParam, lParam) ;
}

void WINAPI SetValues(HHOOK hHook, HWND hOwner, long hCallback)
{
m_hHook = hHook ;
m_hOwner = hOwner ;
m_hCallback = (FUNCPTR)hCallback ;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.