C++ 使用WINAPI ReadConsole
我正在尝试使用WINAPIC++ 使用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
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控制台函数编写了一个包装类。我想用它。对于让上述代码正常工作,您有什么建议吗?