我想编写一个函数,当你点击“esc”时窗口应该关闭,问题是该函数应该用c编写。我是 c 编程新手,请提供任何帮助。
3 回答
好吧,对于 Windows:
GetActiveWindow或GetFocus检索焦点所在的窗口。
GetASyncKeyState捕获退出按钮。
SendMessage关闭相应的窗口。
如果您想要比 GetASyncKeyState 更高级的东西(这对于无限循环中的处理器来说不可靠且昂贵),您可以做一些乍一看相对困难的事情:c 中的全局键盘挂钩
void myfunc(){
char ch;
do{
//do what you want here
ch=getchar();
}while(ch!='27'); //27 is the ascii code for esc
}
没有标准的方法可以立即对 C 中的输入做出反应——在这方面,ESC 键与字母“A”或“x”没有什么不同——在用户按 Enter 之前不会将输入提供给程序。有时,更复杂的情况是 ESC 用于特殊目的,例如 Windows 命令行应用程序使用 ESC 来“擦除我到目前为止输入的任何内容”,这使得即使使用“ESC + Enter”也无法读取。
因此,您需要使用可以从键盘读取“原始”数据的系统特定功能,而不是使用标准 I/O 功能(例如getchar()
)获得的通常“熟”数据。
有独立于操作系统的选项,例如ncurses
为控制台应用程序提供此选项。在windows中,你可以在includesgetch()
之后使用conio.h
,但这是一个非标准库,只能在控制台应用程序中使用。
在窗口环境中,这是响应键盘事件和“if key == ESCAPE close_window”的情况 - 具体如何执行取决于所使用的窗口系统和框架。