HHOOK g_hMouseHook;
g_hMouseHook = SetWindowsHookEx(WH_MOUSE,
(HOOKPROC)MouseHookProc,
(HINSTANCE)AfxGetInstanceHandle(),
AfxGetThread()->m_nThreadID);
LRESULT CALLBACK xxxx::MouseHookProc(int nCode,WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
PMOUSEHOOKSTRUCT mhs = (PMOUSEHOOKSTRUCT)lParam;
switch (wParam)
{
case WM_NCLBUTTONDOWN:
{
if (HTCAPTION == mhs->wHitTestCode)
{
::SendMessage(mhs->hwnd,WM_NCLBUTTONDOWN,HTCAPTION,MAKELONG(mhs->pt.x,mhs->pt.y));
g_bNcLButtonDown = TRUE;
g_bNcDbClick = FALSE;
}
}
break;
case WM_NCLBUTTONUP:
{
g_bNcLButtonDown = FALSE;
}
break;
case WM_LBUTTONUP:
{
if (g_bNcLButtonDown)
{
::PostMessage(mhs->hwnd,WM_NCLBUTTONUP,HTCAPTION,MAKELONG(mhs->pt.x,mhs->pt.y));
g_bNcLButtonDown = FALSE;
}
}
break;
case WM_RBUTTONUP:
{
}
break;
case WM_NCLBUTTONDBLCLK:
{
g_bNcDbClick = TRUE;
}
break;
}
#ifdef _FEATURE_PBGROUP
if (//wParam == WM_NCLBUTTONDOWN ||
//wParam == WM_NCRBUTTONDOWN ||
wParam == WM_NCLBUTTONUP ||
wParam == WM_NCRBUTTONUP ||
wParam == WM_LBUTTONUP ||
wParam == WM_RBUTTONUP)
{
//通知phonebook窗体,有鼠标动作。
::SendMessage(Config::m_pWndPhonebook->GetSafeHwnd(), WM_LBUTTONUP, HTCAPTION, MAKELONG(mhs->pt.x,mhs->pt.y));
}
#endif
}
return CallNextHookEx(g_hMouseHook,nCode,wParam,lParam);
}