C++ ReadConsoleInput事件问题

就是下面这一段 在 vs2015里面 只有调试 状态可以用 ctrl+f5 就会没有效果 是什么原因?

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

HANDLE handle_in;
HANDLE handle_out;
CONSOLE_SCREEN_BUFFER_INFO csbi;         //定义窗口缓冲区信息结构体  

int main()
{
    handle_in = GetStdHandle(STD_INPUT_HANDLE);       //获得标准输入设备句柄  
    handle_out = GetStdHandle(STD_OUTPUT_HANDLE);     //获得标准输出设备句柄  
    INPUT_RECORD mouserec;       //定义输入事件结构体  
    DWORD res;       //用于存储读取记录  
    COORD pos;       //用于存储鼠标当前位置  
    COORD size = { 80, 25 };   //窗口缓冲区大小  
    GetConsoleScreenBufferInfo(handle_out, &csbi);   //获得窗口缓冲区信息  
    SetConsoleScreenBufferSize(handle_out, size);    //设置窗口缓冲区大小  
    for (;;)
    {
        ReadConsoleInput(handle_in, &mouserec, 1, &res);       //读取输入事件  
        pos = mouserec.Event.MouseEvent.dwMousePosition;     //获得当前鼠标位置  
        if (mouserec.EventType == MOUSE_EVENT)     //如果当前为鼠标事件  
        { 
            if (mouserec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
            {
                putchar('A');
            }
            //单击鼠标右键,输出字符B  
            if (mouserec.Event.MouseEvent.dwButtonState == RIGHTMOST_BUTTON_PRESSED)
            {
                putchar('B');
            }
            //双击退出  
            if (mouserec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK)
            {
                break;
            }
        }
    }
    CloseHandle(handle_out);
    CloseHandle(handle_in);
    return 0;
}

handle_in;
HANDLE handle_out;
CONSOLE_SCREEN_BUFFER_INFO csbi; //定义窗口缓冲区信息结构体

int main()
{
handle_in = GetStdHandle(STD_INPUT_HANDLE); //获得标准输入设备句柄

handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //获得标准输出设备句柄

INPUT_RECORD mouserec; //定义输入事件结构体

DWORD res; //用于存储读取记录

COORD pos; //用于存储鼠标当前位置

COORD size = { 80, 25 }; //窗口缓冲区大小

GetConsoleScreenBufferInfo(handle_out, &csbi); //获得窗口缓冲区信息

SetConsoleScreenBufferSize(handle_out, size); //设置窗口缓冲区大小

for (;;)
{
ReadConsoleInput(handle_in, &mouserec, 1, &res); //读取输入事件

pos = mouserec.Event.MouseEvent.dwMousePosition; //获得当前鼠标位置

if (mouserec.EventType == MOUSE_EVENT) //如果当前为鼠标事件

{
if (mouserec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
putchar('A');
}
//单击鼠标右键,输出字符B

if (mouserec.Event.MouseEvent.dwButtonState == RIGHTMOST_BUTTON_PRESSED)
{
putchar('B');
}
//双击退出

if (mouserec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK)
{
break;
}
}

调用方式不一样,看图标看到出来,直接ctrl + f5是通过命令行调用的,我试过直接用cmd去运行,结果一样。我只能帮你到这了,其他的我也不知道.