- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小键盘实现
小键盘实现
C++代码: 输入法的小键盘(软键盘)类
//这是以前写的输入法的小键盘(软键盘)类
//就是输入法输入特殊字符时用的那个小键盘
//比如搜狗输入法上的小键盘按钮按下之后,就会弹出一个小键盘
//
//注意:这是多个文件合在一起了,下载打包好的文件参见相关文章链接:
// /realfun/archive/2005/03/28/127174.html
////////////////////////////////////////////////
//
// CIMESoftKbd.h
/*
* author : yuchifang(realfun)
* email : realfun at gmail dot com
*/
#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_
////////////////////////////////////////////////
//
// CIMESoftKbd.cpp
/*
* author : yuchifang(realfun)
* email : realfun at gmail dot com
*/
#pragma warning(disable:4786)
#inc
文档评论(0)