gpt4 book ai didi

c - 扩展鼠标点击事件 - C

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:29 24 4
gpt4 key购买 nike

目前我正在检测鼠标点击的 x 和 y 位置,将其存储在 Point 中并通过消息框显示。

我希望能够读取是否按住了另一个键盘键,例如 Shift 或 Control 按钮。

查看MSDN我发现了以下信息:

wParam Indicates whether various virtual keys are down. This parameter can be one or more of the following values.

MK_CONTROL The CTRL key is down.

MK_MBUTTON The middle mouse button is down.

MK_RBUTTON The right mouse button is down.

MK_SHIFT The SHIFT key is down.

MK_XBUTTON1 Windows 2000/XP: The first X button is down.

MK_XBUTTON2 Windows 2000/XP: The second X button is down.

我遇到的问题是我不确定如何为每个参数存储 wParam 的结果并使用它们,就像我必须通过消息框显示它们一样。

这是我目前的进展:

LRESULT CALLBACK WindowFunc(HWND hMainWindow, UINT message,
WPARAM wParam, LPARAM lParam)
{
POINTS mouseXY;
WCHAR buffer[256];

// Act on current message
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONUP:
// Get mouse x, y
mouseXY = MAKEPOINTS(lParam);

// Output the co-ordinates
swprintf(buffer, 255, L"x = %d, y = %d", mouseXY.x, mouseXY.y);
MessageBox(0, buffer, L"Mouse Position", MB_OK);
break;
default:
return DefWindowProc(hMainWindow, message, wParam, lParam);
}
return 0;
}

感谢帮助

最佳答案

不同的虚拟键在wParam 中被或运算在一起。要检查单个值,您必须将它们与运算(想想基本的位操作)。

例子:

swprintf(buffer, 255, L"x = %d, y = %d, Shift = %s, Ctrl = %s",
mouseXY.x, mouseXY.y,
wParam & MK_SHIFT ? L"yes" : L"no",
wParam & MK_CONTROL ? L"yes" : L"no");

关于c - 扩展鼠标点击事件 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267650/

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