CIMESoftKbd.h
资源名称:软键盘输入法原代码.rar [点击查看]
上传用户:st_laser
上传日期:2010-04-11
资源大小:5k
文件大小:2k
源码类别:
输入法编程
开发平台:
C++ Builder
- /*
- * author : yuchifang(realfun)
- * email : renzhongfang@nju.org.cn
- */
- #ifndef _IME_SOFTKBD_H_
- #define _IME_SOFTKBD_H_
- #include <cassert>
- #include <tchar.h>
- #include <vector>
- #include <windows.h>
- 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<CIMESkbTab> m_tabs; //存储所有软键盘布局信息
- HWND m_hWndSkb; //软键盘窗口句柄
- };
- #endif//_IME_SOFTKBD_H_