我突然发现之前贴的代码贴的有问题,导致了你的误解,非常抱歉,我修改一下:
#include <easyx.h>
#define MAX_LOADSTRING 100
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
initgraph(640, 480);
TCHAR str[MAX_LOADSTRING];
InputBox(str, MAX_LOADSTRING, _T("请输入"), _T("请输入"));
while (TRUE)
if (GetKeyState(VK_ESCAPE) < 0)
return 0;
}
我突然明白了你所说一瞬间可以命中的意思,才发现,我贴的代码没有循环,这才导致了你的误解。
我所发现的问题始终是主窗体对于ESC的响应,而不是输入框对ESC的响应,我发现的问题,也就是我所说的后遗症,指的是采用阻塞ESC按键的方式会使输入框关闭后主窗体的ESC也被阻塞。
要重现我的问题,请 注释/取消注释 InputBox 一行的代码,你会发现,当 InputBox 被注释掉,按下ESC程序会退出,当 InputBox 一行没有被注释掉,按下ESC键会在调试输出窗口输出类似于
onecore\com\combase\dcomrem\channelb.cxx(6385)\combase.dll!76B8076E: (caller: 75025BB9) ReturnHr(1) tid(4734) 8001010E 应用程序调用一个已为另一线程整理的接口。
0x75B43DB2 (KernelBase.dll)处(位于 Project.exe 中)引发的异常: 0x8001010E: 应用程序调用一个已为另一线程整理的接口。
的信息。