[英]How to print sentence in the position of the mouse cursor in VC++ Win32 application?
我想在鼠標光標所在的位置打印一些東西,所以我使用POINT cursorPos; GetCursorPos(&cursorPos);
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 << ")";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.