www.pudn.com > keybordyyy.rar > key.h
/* * author : yuchifang(realfun) * email : renzhongfang@nju.org.cn */ #ifndef _IME_SOFTKBD_H_ #define _IME_SOFTKBD_H_ #include#include #include #include using namespace std; const SOFT_KEY_COUNT = 47; //表示一个软键盘布局 class CIMESkbTab { public: CIMESkbTab(const TCHAR keys[], const TCHAR shiftKeys[], LPCTSTR name); CIMESkbTab(const CIMESkbTab &skb); TCHAR GetChar(int index); TCHAR GetShiftChar(int index); //转换键盘按键到软键盘字符,不存在则返回0 TCHAR ConvVKey2SKBChar(UINT vKey, bool bShift); //获取tab名称 void GetName(TCHAR name[]) { _tcscpy(name, this->name); } private: TCHAR tab[SOFT_KEY_COUNT]; //软键盘布局 TCHAR shiftTab[SOFT_KEY_COUNT]; //Shift后的软键盘布局 TCHAR name[10]; //软键盘布局名称 }; //该类封装了软键盘操作 class CIMESoftKbd { public: CIMESoftKbd(); //显示下一个软键盘布局 void ShowNext() { m_tabIndex = (m_tabIndex + 1) % m_tabs.size(); Show(); } //显示前一个软键盘布局 void ShowPrev() { m_tabIndex = (m_tabIndex + m_tabs.size() - 1) % m_tabs.size(); Show(); } //显示指定位置的软键盘布局 void ShowAtPos(int index) { m_tabIndex = abs(index) % m_tabs.size(); Show(); } //显示并更新软键盘 void Show(); //隐藏软键盘 void Hide(); //判断软键盘是否打开 bool IsOpen() { return m_bSkbOpened; } //转换键盘按键字符到软键盘字符 TCHAR GetSkbChar(UINT vk, bool bShift); int GetCurrIndex() const { return m_tabIndex; } private: bool m_bSkbOpened; //软键盘是否打开 int m_tabIndex; //当前的软键盘编号 vector m_tabs; //存储所有软键盘布局信息 HWND m_hWndSkb; //软键盘窗口句柄 }; #endif//_IME_SOFTKBD_H_