gpt4 book ai didi

c++ - 在 WM_LBUTTONDOWN 消息中获取鼠标坐标

转载 作者:太空狗 更新时间:2023-10-29 23:46:34 26 4
gpt4 key购买 nike

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;
}

最佳答案

In the process function, why it doesn't pass the POINT variable to process function, and how to find mouse's POINT ?

如果您确实需要,可以使用单独的函数来检索该信息。大多数消息处理程序不处理鼠标输入,并且没有必要为几乎从不使用它们的消息处理程序传递额外的参数。 (可以说 WndProc 可以定义为采用 MSG* ;我不知道其设计的原因,但我猜随着时间的推移,成员被添加到 MSG 结构中。)

By GetCursorPos() ?

没有。 GetCursorPos将返回光标的当前位置,这可能与生成消息时的位置不同。你反而想要 GetMessagePos . (这类似于 GetAsyncKeyState versus GetKeyState 。)

同样,消息处理者可以通过 GetMessageTime 获取消息时间。 .

关于c++ - 在 WM_LBUTTONDOWN 消息中获取鼠标坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com