鼠标down和up的消息一般是一起发送的,除非你有特别的要求: pWnd->SendMessage(WM_LBUTTONDOWN, 1, (LPARAM)MAKELONG(point.x, point.y)); pWnd->SendMessage(WM_LBUTTONUP, 0, (LPARAM)MAKELONG(point.x, point.y));再看一个msdn吧:WM_LBUTTONDOWN fwKeys = wParam; // key flags xPos = LOWORD(lParam); // horizontal position of cursor yPos = HIWORD(lParam); // vertical position of cursor DWORD MAKELONG( WORD wLow, // low-order word of long value WORD wHigh // high-order word of long value );
为什么我一用就出 Unhandled Exception in xxxxx (MFC42D.DLL):0xC0000005:Access Violation
::SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKEWPARAM(x, y));
为什么我一点鼠标就出错呢?
接受消息的窗口用的参数是CPoint啊,这样直接合成一个WPARAM能行么?
pWnd->SendMessage(WM_LBUTTONUP, 0, (LPARAM)MAKELONG(point.x, point.y));再看一个msdn吧:WM_LBUTTONDOWN
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor DWORD MAKELONG(
WORD wLow, // low-order word of long value
WORD wHigh // high-order word of long value
);
Unhandled Exception in xxxxx (MFC42D.DLL):0xC0000005:Access Violation
我用一个把一个自定义窗口类的定义放到dll文件里了。
然后我调用它的SendMessage了。
是不是dll的原因?
Setcapture()
Getcapture()
试一试!