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

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.

Leave a Comment