需求:在控制台程序中獲取鼠標點擊時相對控制台窗口客戶區的坐標。
#include
#include
int main() {
HWND hConsole = GetConsoleWindow(); // 獲取控制台窗口句柄
POINT pt;
while (1) {
if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) { // 左鍵按下
GetCursorPos(&pt); // 獲取屏幕絕對坐標
ScreenToClient(hConsole, &pt); // 轉換為客戶區相對坐標
printf("相對坐標: (%d, %d)\n", pt.x, pt.y);
Sleep(200); // 簡單去抖
}
Sleep(10);
}
return 0;
}
GetConsoleWindow() 獲取當前控制台窗口 HWNDGetCursorPos 取屏幕坐標(以屏幕左上角為原點)ScreenToClient 轉換為指定窗口客戶區坐標(以窗口客戶區左上角為原點)GetAsyncKeyState 輪詢或另開線程若為 GUI 程序(MFC/Win32 SDK),直接在 WM_LBUTTONDOWN 消息中用 LOWORD(lParam), HIWORD(lParam) 取客戶區坐標更簡單。