2014-08-31 150 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; 

}