首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Win32 C++ 獲取鼠標控制台相對坐標:GetCursorPos + ScreenToClient 組合拳

     編輯:程式設計疑難解答

需求:在控制台程序中獲取鼠標點擊時相對控制台窗口客戶區的坐標。

核心 API 組合

#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() 獲取當前控制台窗口 HWND
  • GetCursorPos 取屏幕坐標(以屏幕左上角為原點)
  • ScreenToClient 轉換為指定窗口客戶區坐標(以窗口客戶區左上角為原點)
  • 控制台程序無消息循環,用 GetAsyncKeyState 輪詢或另開線程

若為 GUI 程序(MFC/Win32 SDK),直接在 WM_LBUTTONDOWN 消息中用 LOWORD(lParam), HIWORD(lParam) 取客戶區坐標更簡單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved