-6

我想编写一个函数,当你点击“esc”时窗口应该关闭,问题是该函数应该用c编写。我是 c 编程新手,请提供任何帮助。

4

3 回答 3

2

好吧,对于 Windows:

GetActiveWindowGetFocus检索焦点所在的窗口。
GetASyncKeyState捕获退出按钮。
SendMessage关闭相应的窗口。

如果您想要比 GetASyncKeyState 更高级的东西(这对于无限循环中的处理器来说不可靠且昂贵),您可以做一些乍一看相对困难的事情:c 中的全局键盘挂钩

于 2013-06-06T10:49:32.633 回答
0
void myfunc(){
  char ch;
  do{
      //do what you want here
      ch=getchar();
  }while(ch!='27');   //27 is the ascii code for esc
}
于 2013-06-06T15:34:11.767 回答
-1

没有标准的方法可以立即对 C 中的输入做出反应——在这方面,ESC 键与字母“A”或“x”没有什么不同——在用户按 Enter 之前不会将输入提供给程序。有时,更复杂的情况是 ESC 用于特殊目的,例如 Windows 命令行应用程序使用 ESC 来“擦除我到目前为止输入的任何内容”,这使得即使使用“ESC + Enter”也无法读取。

因此,您需要使用可以从键盘读取“原始”数据的系统特定功能,而不是使用标准 I/O 功能(例如getchar())获得的通常“熟”数据。

有独立于操作系统的选项,例如ncurses为控制台应用程序提供此选项。在windows中,你可以在includesgetch()之后使用conio.h,但这是一个非标准库,只能在控制台应用程序中使用。

在窗口环境中,这是响应键盘事件和“if key == ESCAPE close_window”的情况 - 具体如何执行取决于所使用的窗口系统和框架。

于 2013-06-06T10:13:35.913 回答