如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?

How to Get Mouse Cursor Cordinates when left click is pressed and when left click is released in C++?

本文关键字:单击 C++ 释放 何获得 光标 鼠标 连接      更新时间:2023-10-16

我正在尝试为我正在尝试的大学项目创建截图工具:用户可以在其中截取鼠标覆盖和拉伸的区域的屏幕截图。

例如:当鼠标左键被单击时:它得到x,y轴,当鼠标被释放时,它得到x,y轴。我在 SendInput(( 中也找不到任何代码或事件函数。帮助。

为了创建屏幕截图并添加到剪贴板中,我正在使用以下代码:

void screenshot(POINT a, POINT b)
{
// copy screen to bitmap
HDC     hScreen = GetDC(NULL);
HDC     hDC = CreateCompatibleDC(hScreen);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreen, abs(b.x - a.x), abs(b.y - a.y));
HGDIOBJ old_obj = SelectObject(hDC, hBitmap);
BOOL    bRet = BitBlt(hDC, 0, 0, abs(b.x - a.x), abs(b.y - a.y), hScreen, a.x, a.y, SRCCOPY);

// save bitmap to clipboard
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBitmap);
CloseClipboard();
// clean up
SelectObject(hDC, old_obj);
DeleteDC(hDC);
ReleaseDC(NULL, hScreen);
DeleteObject(hBitmap);
}
int main()
{
POINT a, b;
a.x = 0;
a.y = 0;
b.x = 10000;
b.y = 10000;
screenshot(a, b);
}

您需要创建 Windows 桌面应用程序,而不是控制台应用程序,就像您的情况一样。然后,对于主窗口,您需要实现鼠标的消息处理程序,您可以在其中处理鼠标按钮单击并获取位置坐标。检查 WTL 示例。