2009-01-05 51 views
0

我正在处理文档应用程序和此应用程序的一部分我必须添加支持才能读取键盘按下的事件并替换预定义的字符集,如果该键盘条目与预先定义的简短形式/单词。实际的应用程序已经在C++中实现。读取键盘字符以确定快捷键

请给我你如何实现这个想法。是否有任何示例C++程序供参考?算法/概念?

+0

您能给我们一个关于它将在哪个平台上运行的想法吗? – bugmagnet 2009-01-05 06:00:44

回答

0

标准C++不支持按键事件,因此您必须查看OS函数或框架函数。可移植的C++框架如wxWidgets或Qt支持Windows,Mac和Linux上的按键事件。

+0

实际的应用程序是用C++和Wxwidgets实现的。是否会有这样的文件? – Thi 2009-01-05 19:41:30

2

了解如何捕捉使用wxWidgets API,也许这里的keydown事件: http://docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#eventhandlingoverview 讲究key events。在C++中实现一个开关,以查看按下了哪个组合键,并将文本设置为相应的编辑。我在想的是在编辑框中将CTRL-SHIFT-A按键转换为像Ctrl-Shift-a这样的文本。

如果您正在考虑将字符组合转换为其他字符,例如汉字或平假名,算法可能会更长,并且需要更多的数据结构。

0

如果你在Windows下,你可以使用GetAsyncKeystate API调用并观察变化,或者使用低级键盘钩子(稍微复杂一些)(CreateHookEx +相关函数)。你可以在控制台模式下在conio.h中使用_kbhit,我通常把它放在一个循环中(while(!_ kbhit());)以便“按任意键继续”,但使用_getch可以检索被按下的密钥