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_