找回密码
 快速注册
搜索
查看: 50|回复: 1

[c++]获取两次点击的坐标之差

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2022-5-24 10:17 |阅读模式
本帖最后由 hbghlyj 于 2022-5-24 21:24 编辑 刚刚学.......啥都不懂.....写一个非常初级的小程序....记录一下

功能:
最小化控制台
鼠标点击第一次,记录坐标pt1
鼠标点击第二次,记录坐标pt2
输出坐标之差
最大化控制台

  1. #include<iostream>
  2. #include<windows.h>
  3. POINT pt1{};
  4. POINT pt2{};
  5. bool was_pressed = false;
  6. bool IsKeyPressed() {
  7.     bool is_pressed = (GetAsyncKeyState(VK_LBUTTON) & 0x8000) != 0;
  8.     if (was_pressed && !is_pressed) {
  9.         was_pressed = is_pressed;
  10.         return true;
  11.     }
  12.     was_pressed = is_pressed;
  13.     return false;
  14. }
  15. int main(){
  16.     ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
  17.     while (!IsKeyPressed()){}
  18.     GetCursorPos(&pt1);
  19.     while (!IsKeyPressed()){};
  20.     GetCursorPos(&pt2);
  21.     std::cout << '(' << (pt2.x-pt1.x) << ',' << (pt2.y-pt1.y) << ')' << std::endl;
  22.     ShowWindow(GetConsoleWindow(), SW_MAXIMIZE);
  23.     return 0;
  24. }
复制代码



编译的结果:
$type getcursor_win.zip (14.26 KB, 下载次数: 1)
(这个zip里面只有一个exe文件.我起初提交exe附件时,提示“不支持此扩展名” ,于是改为压缩包)

遗憾:
1.最后需要手动复制. 不知道怎么实现自动复制结果...
2.这是一个控制台程序. 下次得学习一下怎么制作窗口程序,可以参考一下教程


参考资料:
cplusplus.com/doc/tutorial/ (语言基础)
ShowWindow (Microsoft doc)
GetCursorPos (Microsoft doc)
GetAsyncKeyState (a post on cplusplus forum)

后记:
用DOSKEY创建alias
Screenshot 2022-05-24 at 19-43-37 iciam07.pdf.png

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2022-9-16 17:31

Mathematica

Get the current mouse position:
  1. CurrentValue["MousePosition"]
复制代码

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:53

Powered by Discuz!

× 快速回复 返回顶部 返回列表