I started learning Win32 console API. In the first event handler loop of this program it detects mouse events. In Visual Studio when I run in debug mode it detects mouse events correctly but when I start it without debugging it doesnt detect it. when I execute its file externaly it is alright.Code://This file is intended to use all Win32 API console functions for learning purposes //Consoles are used to build character mode applications #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <stdlib.h> int main() { SetConsoleTitle("Power Console"); //Getting Handles HANDLE hIn; HANDLE hOut; HANDLE hError; AllocConsole(); hIn = GetStdHandle(STD_INPUT_HANDLE); hOut = GetStdHandle(STD_OUTPUT_HANDLE); hError = GetStdHandle(STD_ERROR_HANDLE); //Writing to console DWORD n; WriteConsole(hOut, "Hello World!\n",13, &n, NULL); //Changing cursor position COORD Position; for(int i=5; i<14; i+=2) { Sleep(400); Position.X = i; Position.Y = i; SetConsoleCursorPosition(hOut, Position); WriteConsole(hOut, "Here",4, &n, NULL); } //This function writes a defined number of one char on screen Position.X = 5; Position.Y = 5; FillConsoleOutputCharacter(hOut, 'X', 15, Position, &n); //Now we read from screen buffer CHAR read[16]; Position.X = 0; Position.Y = 0; ReadConsoleOutputCharacter(hOut, read, 13, Position, &n); //And its sister function to write chars Position.X = 0; Position.Y = 10; WriteConsoleOutputCharacter(hOut, read, n, Position, &n); //Now lets play with the cursor //First we need the struct CONSOLE_CURSOR_INFO ConCurInf; GetConsoleCursorInfo(hOut, &ConCurInf); DWORD initialSize = ConCurInf.dwSize; for(int i= 0; i<100;i+=4) { ConCurInf.dwSize = i; SetConsoleCursorInfo(hOut, &ConCurInf); Sleep(150); } ConCurInf.dwSize = initialSize; //Back to normal size SetConsoleCursorInfo(hOut, &ConCurInf); //ChangingColor SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE); WriteConsole(hOut, "Hello World!\n",13, &n, NULL); //Now we want to know the color which we wrote with //First we need the struct CONSOLE_SCREEN_BUFFER_INFO ConScrBuffInf; GetConsoleScreenBufferInfo(hOut, &ConScrBuffInf); Position = ConScrBuffInf.dwCursorPosition; Position.Y -=1; Position.X +=10; WORD attrib; ReadConsoleOutputAttribute(hOut, &attrib, 1 , Position, &n); Sleep(1000); FillConsoleOutputAttribute(hOut, FOREGROUND_BLUE| FOREGROUND_INTENSITY,70, Position, &n); //Now Events INPUT_RECORD InRec; bool Continue = TRUE; int KeyEvents = 0; int MouseEvents = 0; COORD KeyWhere; COORD MouseWhere; COORD EndWhere; Position.Y =20; Position.X =0; SetConsoleCursorPosition(hOut, Position); WriteConsole(hOut, "Key Events : \n", 16,&n,NULL); WriteConsole(hOut, "Mouse Events : ", 15,&n,NULL); KeyWhere.X = 15; KeyWhere.Y = 20; MouseWhere.X = 15; MouseWhere.Y = 21; EndWhere.X = 0; EndWhere.Y = 22; read[0] = '\0'; while (Continue) { ReadConsoleInput(hIn, &InRec, 1, &n); switch (InRec.EventType) { case KEY_EVENT: ++KeyEvents; SetConsoleCursorPosition(hOut, KeyWhere); _itoa(KeyEvents, read,10); WriteConsole(hOut, read, strlen(read), &n, NULL); if (InRec.Event.KeyEvent.uChar.AsciiChar == 'x') { SetConsoleCursorPosition(hOut, EndWhere); WriteConsole(hOut, "Exiting...\n", 11, &n, NULL); Continue = FALSE; } break; case MOUSE_EVENT: ++MouseEvents; SetConsoleCursorPosition(hOut, MouseWhere); _itoa(MouseEvents, read, 10); WriteConsole(hOut, read, strlen(read), &n, NULL); break; } } //Another evant handling Position.Y =25; Position.X =0; SetConsoleCursorPosition(hOut, Position); WriteConsole(hOut, "Key Events : ", 15,&n,NULL); unsigned char HoldKey; COORD LoopWhere; int LoopCount = 0; DWORD EventCount; KeyWhere.X = 15; KeyWhere.Y = 25; LoopWhere.X = 0; LoopWhere.Y = 26; EndWhere.X = 0; EndWhere.Y = 27; Continue = true; KeyEvents = 0; while (Continue) { SetConsoleCursorPosition(hOut, LoopWhere); _itoa(LoopCount++, read,10); WriteConsole(hOut, read, strlen(read), &n, NULL); WriteConsole(hOut, " ", 6, &n, NULL); Sleep(30); // To slow it down!! GetNumberOfConsoleInputEvents(hIn, &EventCount); while (EventCount > 0) { ReadConsoleInput(hIn, &InRec, 1, &n); if (InRec.EventType == KEY_EVENT) { if (InRec.Event.KeyEvent.bKeyDown) { HoldKey = InRec.Event.KeyEvent.uChar.AsciiChar; } else { ++KeyEvents; SetConsoleCursorPosition(hOut, KeyWhere); _itoa(KeyEvents, read, 10); WriteConsole(hOut,read, strlen(read), &n, NULL); LoopCount = 0; if (HoldKey == 'x') { if (InRec.Event.KeyEvent.dwControlKeyState & LEFT_ALT_PRESSED) { SetConsoleCursorPosition(hOut, EndWhere); WriteConsole(hOut,"Exiting...", 10, &n, NULL); Continue = FALSE; } } } } GetNumberOfConsoleInputEvents(hIn, &EventCount); } } return 0; }