Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用WINAPI ReadConsole_C++_Winapi_Console Application_Keyboard Input - Fatal编程技术网

C++ 使用WINAPI ReadConsole

C++ 使用WINAPI ReadConsole,c++,winapi,console-application,keyboard-input,C++,Winapi,Console Application,Keyboard Input,我正在尝试使用WINAPIReadConsole()等待Win32 console应用程序末尾的任何按键 CONSOLE_READCONSOLE_CONTROL tControl; char pStr[65536]; DWORD dwBufLen = 1; DWORD dwCtl; tControl_c.nLength = sizeof( CONSOLE_READCONSOLE_CONTROL ); tControl_c.nInitialChars = 0; tControl_c.dwCont

我正在尝试使用WINAPI
ReadConsole()
等待Win32 console应用程序末尾的任何按键

CONSOLE_READCONSOLE_CONTROL tControl;
char pStr[65536];
DWORD dwBufLen = 1;
DWORD dwCtl;

tControl_c.nLength = sizeof( CONSOLE_READCONSOLE_CONTROL );
tControl_c.nInitialChars = 0;
tControl_c.dwControlKeyState = 0;
tControl_c.dwCtrlWakeupMask = NULL;

pBuf[0] = 0x00;

do
{
   ReadConsole( hConsole_c, pStr, (*pBufLen) * sizeof(TCHAR), pBufLen, &tControl );
}
while ( pStr[0] == 0x00 );

代码执行时不会引发异常。但是,当执行
ReadConsole()
函数时,会标记错误代码
error\u INVALID\u HANDLE
(0x06)。我已验证
hConsole\u c
是否为有效句柄。有人知道我做错了什么吗?我使用Visual C++ 2008 Express版。谢谢。

如果您只是想在控制台应用程序末尾等待按键
你为什么不试试
系统(“暂停”)

等待击键的方法过于复杂。使用单个C函数调用,有几种方法可以做到这一点:

  • getch()(或ISO C++一致性名称,<代码>李>
    
  • 系统(“暂停”),这是特定于Windows的

    • 对我来说很好。我能让它失败的唯一方法是传递STD\u输出\u句柄,而不是STD\u输入\u句柄。你确定hConsole_c是输入句柄吗?

      是的,我有一个使用ISO调用的工作函数,但我费了很大的劲为WINAPI控制台函数编写了一个包装类。我想用它。您对如何让上述代码正常工作有什么建议吗?是的,但是我费了很大的劲为WINAPI控制台函数编写了一个包装类。我想用它。对于让上述代码正常工作,您有什么建议吗?