How can I get the mouse position in a console program?

someguy picture someguy · Jun 8, 2011 · Viewed 21.7k times · Source

How can I get the mouse click position in C++ in a Windows console program? (A variable that returns the position of the mouse when clicked)

I want to draw a menu with simple text commands, so when someone clicks, the game will register it and know the position. I know how to do everything I need to do except get the mouse position when clicked.

Answer

user7116 picture user7116 · Jun 8, 2011

You'll need to use the *ConsoleInput family of methods (peek, read, etc). These operate on the console's input buffer, which includes keyboard and mouse events. The general strategy is:

  1. wait on the console's input buffer handle (ReadConsoleInput)
  2. determine the number of waiting events (lpNumberOfEventsRead)
  3. handle them as you see fit (i.e. MOUSE_EVENT and MOUSE_EVENT_RECORD)

You'll have to indicate that you want to retrieve mouse input using SetConsoleMode first though, as illustrated in this MSDN article.