单击时检测鼠标操作

时间:2014-08-31 17:19:54

标签: c++ function mouse

如何检测(x,y)坐标点上的点击是否会创建任何操作? 例如,是否有任何bool函数(在c ++中)或类似的东西可以告诉我,如果双击(200,200)坐标点是否会在实际点击之前创建任何操作?

1 个答案:

答案 0 :(得分:0)

使用ReadConsoleInput进行鼠标事件。

你可以查看微软的domentation。 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;

}