2009-01-05 105 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可以檢索被按下的密鑰