如何在vc++ Win32应用程序中打印句子在鼠标光标的位置
How to print sentence in the position of the mouse cursor in VC++ Win32 application?
我想在鼠标光标所在的位置打印一些东西,所以我使用POINT cursorPos; GetCursorPos(&cursorPos);
获取鼠标光标的位置。
然后我将控制台光标设置到该位置,并打印鼠标坐标。然而结果是不正确的。
代码如下:
#include<iostream>
#include<Windows.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void gotoxy(int column, int line){
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(
GetStdHandle(STD_OUTPUT_HANDLE),
coord
);
}
int main(){
while (1){
POINT cursorPos;
GetCursorPos(&cursorPos);
system("pause");
gotoxy(cursorPos.x, cursorPos.y);
cout << cursorPos.x << " " << cursorPos.y;
}
}
谢谢你~
使用GetConsoleScreenBufferInfo
查找控制台窗口中的光标位置。请看下面的例子
在控制台程序中跟踪鼠标位置可能没有用。如果你真的需要鼠标指针的位置,你必须从桌面坐标转换到控制台窗口坐标。
获取控制台窗口的句柄GetConsoleWindow()
使用ScreenToClient
将鼠标指针位置从屏幕转换到客户端。将坐标映射到CONSOLE_SCREEN_BUFFER_INFO::srWindow
COORD getxy()
{
POINT pt;
GetCursorPos(&pt);
HWND hwnd = GetConsoleWindow();
RECT rc;
GetClientRect(hwnd, &rc);
ScreenToClient(hwnd, &pt);
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO inf;
GetConsoleScreenBufferInfo(hout, &inf);
COORD coord = { 0, 0 };
coord.X = MulDiv(pt.x, inf.srWindow.Right, rc.right);
coord.Y = MulDiv(pt.y, inf.srWindow.Bottom, rc.bottom);
return coord;
}
int main()
{
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
while (1)
{
system("pause");
COORD coord = getxy();
SetConsoleCursorPosition(hout, coord);
cout << "(" << coord.X << "," << coord.Y << ")";
}
}
相关文章:
- WinAPI挂钩鼠标
- 如何删除peer if else分支中的冗长句子
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- Win32 发送输入鼠标移动滞后并冻结
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 在输入句子时终止 std::out_of_range
- 使用 C++ 验证 NMEA 句子
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 分析包含 NMEA 句子的日志文件C++
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在QSplashScreen中禁用鼠标单击
- C++鼠标单击时的屏幕截图不起作用
- 如何将鼠标坐标转换为"mm"
- 如何在vc++ Win32应用程序中打印句子在鼠标光标的位置