c++ - 如何在单击时显示 X、Y 坐标并在控制台中显示

标签 c++ c++11

我已经学习 c++ 两个多星期了,我正在尝试通过编写一个简单的控制台应用程序来练习我必须练习的知识,该应用程序显示我的鼠标光标的 X 和 Y 坐标,我看过在 MSDN Libs 上尝试理解,但我所做的只是以错误的方式显示坐标。

这是我现在拥有的代码,它不是很多,但我想确保我以正确的方式做事,这样我就不会养成坏习惯;

#include <iostream>
#include <Windows.h>

int main() 
{
POINT cursorPos;
GetCursorPos(&cursorPos);
printf("X %d    Y %d\n", cursorPos.x, cursorPos.y);


system("PAUSE");
}

这样做的主要目标是打开控制台(一旦运行)并监听左键单击,然后在控制台中显示该坐标,直到再次单击它!

非常感谢对此的任何帮助,如果在我尝试搜索但没有成功之前将其发布在某处,我深表歉意!

问候

克里斯

最佳答案

尝试这样的事情:

#include <iostream>
#include <Windows.h>

int main() 
{
    POINT cursorPos;

    do
    {
        GetCursorPos( &cursorPos );
        printf("X %d    Y %d\n", cursorPos.x, cursorPos.y);
        Sleep( 100 );
    }
    while ( cursorPos.x != 0 || cursorPos.y != 0 );

    // just "for fun", as an example,
    // you have to set your mouse to X=0, Y=0 to exit!

    return 0;
}

事实是:一个程序只是一系列操作,所以“如果它完成了它所做的……它就死了!”

当程序保持事件状态时,意味着它实际上在“事件循环”中运行。它意味着一个“让程序保持活力”的循环。根据您正在使用的系统/平台,它有很多名称(例如,在 OS X 中,它称为 RunLoops),但它们都是相同的想法。

这个“事件循环”的基本和一般思想基本上总是一样的:观察用户输入,观察系统输入,并根据输入做一些 Action (很多时候, Action 只是“ sleep ! ")

用这个方法。您的程序将永远保持活力!直到它响应意味着“关闭它”的输入。 (例如,在 Windows 中,当您使用 Windows 时,它可能是 WM_QUIT 消息,或者只是 ESC 键,在控制台模式下,等等...)

这是上面的例子吗,我只是给出了“作为例子”,如果鼠标位置转到 (x=0, y=0) 就退出。

关于c++ - 如何在单击时显示 X、Y 坐标并在控制台中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528614/

相关文章:

c++ - 无法在QT编辑器中创建调试引擎

c++ - 我可以用 constexpr 函数声明一个静态数组吗

c++ - 为什么 std::async 比简单的分离线程慢?

c++ - 字符串流输出比较

c++ - 理解常量

c++ - 使用对象的哈希结构

c++ - 从 vector 数组循环中获取数据供以后使用 C++

C++ 线程采用引用参数编译失败

c++ - std::enable_if 如何阻止成员模板的声明?

c++ - 标准对 lambda 类型的命名空间有何规定?