case WM_MOUSEMOVE:
...
return; //replace break;case WM_LBUTTONDOWN:
...
return; //replace break;case WM_LBUTTONUP:
...
return; //replace break;
...
return; //replace break;case WM_LBUTTONDOWN:
...
return; //replace break;case WM_LBUTTONUP:
...
return; //replace break;
解决方案 »
- vs 2010 字符串问题
- 怎么为VC写的EXE文件写一个DLL文件让这个EXE调用DLL
- VC++中class视图丢class
- 分割视图继承CRichEditView的问题
- 关于IHtmlFramesCollection2接口的问题,请各位大哥帮忙!!
- 链接时老是说 无法打开输入文件“winsock.h”
- 辅助线程无法调用对话框的UpdateData函数
- c++builder编写发送电子邮件软件是由于其有nmstmp nmpop3控件,真的非常强大,vc中有吗?如没有如何得到
- 求救:dxshow的高手帮帮忙。。。
- Python兄,对不起,msdn02.zip还有6%没有下载完,能不能再重新放上来,小弟感激不尽,谢谢了!
- 高难度的VC控件
- vc编译中工程路径问题- 请高手相助
{
switch (wParam)
{
case 0: //WM_LBUTTONDOWN
{
if(!bMoving)
{
Start=false;
bMoving=true;
CPoint pXY;
::GetCursorPos(&pXY);
m_StrokePoint->AddPoint(CPoint(pXY.x,pXY.y));
}
return 0;
break;
}
case 1://鼠标移动事件WM_MOUSEMOVE
{
if(bMoving)
{
CDC *pDC;
pDC = CDC::FromHandle(::GetDC(NULL));
CPen cNewPen(PS_SOLID,4,RGB(255,0,0)), *pOldPen;
pOldPen = pDC->SelectObject(&cNewPen);
CPoint pXY;
::GetCursorPos(&pXY);
m_StrokePoint->AddPoint(CPoint(pXY.x,pXY.y));
int nSize = m_StrokePoint->GetPointCount();
pDC->MoveTo(m_StrokePoint->GetAt(nSize-2));
pDC->LineTo(pXY.x,pXY.y);
pDC->SelectObject(pOldPen);
Start=false;
}
return 0;
break;
}
case 2: //WM_LBUTTONUP
{
//StopHook(m_hWnd);
if (bMoving)
{
bMoving=false;
m_StrokeArray.Add(m_StrokePoint);
m_StrokePoint = new CElectricInkStrokeU();
SetTimer(1,1000,NULL);
Start=true;
}
return 0;
break;
}
case 3://WM_RBUTTONDOUN
return 0;
break;
}
return 0;
}
{
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *)lparam;
if (nCode>=0)
{
/*============================================================================
如下代码是得到父窗口标题文本的做法
HWND glhTargetWnd=pMouseHook->hwnd; //取目标窗口句柄
HWND ParentWnd=glhTargetWnd;
while (ParentWnd !=NULL)
{
glhTargetWnd=ParentWnd;
ParentWnd=GetParent(glhTargetWnd); //取应用程序主窗口句柄
}
===========================================================================*/
HWND glhTargetWnd=XYZWindowFromPoint(NULL,pMouseHook->pt); //用上面的一段注释掉的代码替换此行是得到父窗口标题文本的做法
if(glhTargetWnd!=glhPrevTarWnd)
{
char szCaption[256];
GetWindowText(glhTargetWnd,szCaption,100);
//取目标窗口标题
if(IsWindow(glhDisplayWnd))
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
glhPrevTarWnd=glhTargetWnd;
//保存目标窗口
}
}
return CallNextHookEx(glhHook,nCode,wparam,lparam);
//继续传递消息
}
替换成 break; 出现编译错误。( error C2043: illegal break)StartHook 如下:BOOL CMouseHook::StartHook(HWND hWnd)
{
BOOL bResult=FALSE; glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0); if(glhHook!=NULL)
bResult=TRUE;
glhDisplayWnd=hWnd;
return bResult;
}我是初学者请多指教。
UINT UWM_MOUSEMOVE;
HHOOK hook;
static LRESULT CALLBACK msghook(UINT nCode, WPARAM wParam, LPARAM lParam);BOOL APIENTRY DllMain( HINSTANCE hInstance,
DWORD Reason,
LPVOID Reserved
)
{
switch(Reason)
{ /* reason */
case DLL_PROCESS_ATTACH:
hInst = hInstance;
UWM_MOUSEMOVE = RegisterWindowMessage(UWM_MOUSEMOVE_MSG);
return TRUE;
case DLL_PROCESS_DETACH:
if(hWndServer != NULL)
StopHook(hWndServer);
return TRUE;
} /* reason */
return TRUE;
}
/****************************************************************************
* setMyHook
* Inputs:
* HWND hWnd: Window to notify
* Result: BOOL
* TRUE if successful
* FALSE if error
* Effect:
* Sets the hook
****************************************************************************/__declspec(dllexport) BOOL StartHook(HWND hWnd)
{
if(hWndServer != NULL)
return FALSE; // already hooked!
hook = SetWindowsHookEx(WH_GETMESSAGE,
(HOOKPROC)msghook,
hInst,
0);
if(hook != NULL)
{ /* success */
hWndServer = hWnd;
return TRUE;
} /* success */
return FALSE; // failed to set hook
} // setMyHook
/****************************************************************************
* clearMyHook
* Inputs:
* HWND hWnd: Window hook
* Result: BOOL
* TRUE if successful
* FALSE if error
* Effect:
* Removes the hook that has been set
****************************************************************************/__declspec(dllexport) BOOL StopHook(HWND hWnd)
{
if(hWnd != hWndServer || hWnd == NULL)
return FALSE;
BOOL unhooked = UnhookWindowsHookEx(hook);
if(unhooked)
hWndServer = NULL;
return unhooked;
} // StopHook
/****************************************************************************
* msghook
* Inputs:
* int nCode: Code value
* WPARAM wParam:
* LPARAM lParam:
* Result: LRESULT
* Either 0 or the result of CallNextHookEx
* Effect:
* Hook processing function. If the message is a mouse-move message,
* posts the coordinates to the parent window
****************************************************************************/static LRESULT CALLBACK msghook(UINT nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
{ /* pass it on */
CallNextHookEx(hook, nCode, wParam, lParam);
return 0;
} /* pass it on */
LPMSG msg = (LPMSG)lParam;
switch(msg->message)
{
case WM_LBUTTONDOWN:
{
PostMessage(hWndServer, UWM_MOUSEMOVE, 0, 0);
break;
}
case WM_MOUSEMOVE:
case WM_NCMOUSEMOVE:
{
PostMessage(hWndServer, UWM_MOUSEMOVE, 1, 0);
break;
}
case WM_LBUTTONUP:
{
PostMessage(hWndServer, UWM_MOUSEMOVE, 2, 0);
break;
}
case WM_RBUTTONDOWN:
{
PostMessage(hWndServer, UWM_MOUSEMOVE, 3, 0);
break;
}
case WM_RBUTTONUP:
{
PostMessage(hWndServer, UWM_MOUSEMOVE, 4, 0);
break;
}
default:
break;
}
return CallNextHookEx(hook, nCode, wParam, lParam);
} // msghook
return CallNextHookEx(hook, nCode, wParam, lParam); //replace return 0; 还是不行。