【问题标题】:Getting indexes of two dimensional array with mouse click [closed]通过鼠标单击获取二维数组的索引[关闭]
【发布时间】:2018-10-12 10:57:48
【问题描述】:

如果我在控制台中有一个二维数组,例如:

  0123
0 OOOO
1 OOOO
2 OOOO
3 OOOX <--- mouse click here

我想用鼠标单击数组并获取数组的索引。例如,我单击位置 (3;3) 并在控制台中输出“x = 3 and y = 3”

如何在 C++ 中做到这一点? (我使用的是 Windows)

【问题讨论】:

  • 查看stackoverflow.com/questions/6285270/… 以了解如何在控制台窗口中获取鼠标位置。然后将该位置转换为数组上的位置只是数学,只有您知道如何做,因为只有您知道打印该数组的位置

标签: c++ arrays windows


【解决方案1】:

试试这个代码:

#include <iostream>
#include <windows.h>
#include <stdio.h>

int main()
{
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    HANDLE hin = GetStdHandle(STD_INPUT_HANDLE);
    INPUT_RECORD InputRecord;
    DWORD Events;
    COORD coord;
    SetConsoleMode(hin, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);
        while (1) {
                ReadConsoleInput(hin, &InputRecord, 1, &Events);
                switch (InputRecord.EventType) {
                case MOUSE_EVENT: // mouse input 

                    if (InputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)    //if mouse-1 is clicked
                    {
                        int x = InputRecord.Event.MouseEvent.dwMousePosition.X;    //mouse coordinates
                        int y = InputRecord.Event.MouseEvent.dwMousePosition.Y;
                        coord.X = x;
                        coord.Y = y;
                        SetConsoleCursorPosition(hout, coord);    //sets vursors position for output
                        std::cout <<"x = " << x << " y = "<<  y;
                    }
                    break;
                }
            }
}

这应该输出鼠标点击位置的坐标。

【讨论】:

  • 谢谢,这就是我要找的答案。
猜你喜欢
  • 2016-02-27
  • 2021-02-27
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2022-10-25
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多