以下是 MSG
的结构:
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG;
消息的处理流程如下:
long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)
我的问题: 在消息过程中,为什么不将POINT
变量传递给窗口过程,如何找到鼠标的POINT
?通过GetCursorPos()
吗?我发现一些示例直接通过LOWORD(lParam), HIWORD(lParam)
获取它..你能告诉我相关信息吗?谢谢...
我看到有人这样写,这是正确的吗?我不确定:
RECT rect1;
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
WORD x,y;
PAINTSTRUCT ps;
x = LOWORD(lParam);
y = HIWORD(lParam);
switch(iMessage)
{
case WM_LBUTTONDOWN:
if(wParam&MK_CONTROL)
{
rect1.left = x;
rect1.top = y;
}
else if(wParam&MK_SHIFT)
{
rect1.left = x;
rect1.top = y;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}