2014-08-31 192 views
-3

如何檢測點擊(x,y)座標點是否會產生任何動作? 例如,是否有任何布爾函數(在c + +中)或類似的東西,可以告訴我,如果雙擊(200,200)座標點將實際進行點擊之前創建任何操作?檢測點擊鼠標動作

+0

您還沒有表現出你已經嘗試或迄今爲止研究。而你甚至不說哪個系統。鼠標點擊和GUI不是標準C++的一部分。作爲開發人員,您有責任爲您的編譯器和操作系統選擇一個庫或框架,並權衡所有可能選擇的優缺點。 – 2014-08-31 18:10:54

回答

0

使用ReadConsoleInput進行鼠標事件。

您可以查看微軟的操作系統。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms685035(v=vs.85).aspx

再次取樣代碼:

#include <iostream> 
#include <stdlib.h> 
#include <windows.h> 
using namespace std; 


int main() 
{ 
    cout<<"click anywhere in console window to write - hello world -\n\n\n\n\n\n\n\n\n\n\n\n\n" 
    "Press Ctrl+C to Exit"; 

     HANDLE hout= GetStdHandle(STD_OUTPUT_HANDLE); 
     HANDLE hin = GetStdHandle(STD_INPUT_HANDLE); 
     INPUT_RECORD InputRecord; 
     DWORD Events; 
     COORD coord; 
     CONSOLE_CURSOR_INFO cci; 
     cci.dwSize = 25; 
     cci.bVisible = FALSE; 
     SetConsoleCursorInfo(hout, &cci); 
     SetConsoleMode(hin, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT); 


    while(1) 
    { 

     ReadConsoleInput(hin, &InputRecord, 1, &Events); 

     if(InputRecord.EventType == MOUSE_EVENT) 
     { 
      if(InputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) 
      { 
       coord.X = InputRecord.Event.MouseEvent.dwMousePosition.X; 
       coord.Y = InputRecord.Event.MouseEvent.dwMousePosition.Y; 
       SetConsoleCursorPosition(hout,coord); 
       SetConsoleTextAttribute(hout,rand() %7+9); 

       cout<<"Hello world" ; 

      } 
     } 
     FlushConsoleInputBuffer(hin); 
    } 
    return 0; 

}