希望你可以补充个详细源码来说明问题。
补充 1:
你后来补充的代码,仍然是无法编译的。我根据你的代码做了额外补充,完整的可编译代码如下:
// 测试环境 1:Win10(1909),VS2019,EasyX_20200315(beta)
// 测试环境 2:WinXP(sp3),VS2010,EasyX_20200315(beta)
//
#include <graphics.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("请输入"));
if (GetKeyState(VK_ESCAPE) < 0)
{
Sleep(1000);
}
for (int x = 0; x < 640; x = (x + 10) % 640)
{
cleardevice();
circle(x, 100, 20);
Sleep(100);
}
}
如代码中注释,我分别在 Win10 和 WinXP 两个系统下做了测试。同时,Win 10 下分别以 x86 和 x64 做了编译。
执行程序后在 InputBox 里面输入字符串“test”,点击确定。之后并未发现任何错误,Output 窗口也没有任何异常。
你看,为什么简单的问题,我们俩却看到了不同的结果?或许是因为你装了 360,或许是因为我的 Win10 升级到了最新版,或许是你电脑中毒了。。。
每个电脑的环境都有差异。很多时候,不能完整的描述环境,就无法定位问题所在。
PS:你在别人电脑上能否复现这个问题呢?
补充 2:
在我的“补充 1“的代码里面的 Sleep(1000) 加断点,不会命中。因为 InputBox 是阻塞调用,且默认不允许”取消“,所以按 ESC 是无效的。在 InputBox 窗口关闭后的瞬间按下 ESC 才会被 if 断点命中,显然我的反应能力拼不过计算机。
如果你需要 ESC 关闭 InputBox 窗口,请参考 InputBox 的帮助:https://docs.easyx.cn/inputbox。但请注意:关闭窗口的 ESC 按键,不会发送至绘图窗口,这是两码事。
另外,判断按键应该用异步方法 GetAsyncKeyState。
如果你希望按下 ESC 使 if 为真,代码可以这么修改:
// 编译环境:Win10(1909),VS2019,EasyX_20200315(beta)
//
#include <graphics.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("请输入"));
Sleep(2000);
if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)
{
Sleep(1000);
}
for (int x = 0; x < 640; x = (x + 10) % 640)
{
cleardevice();
circle(x, 100, 20);
Sleep(100);
}
}
PS:建议你将评论里面写的关键信息,补充到自己的提问里面。