您的位置:首页 > 其它

MFC中调用软键盘

2013-05-09 17:17 260 查看
转http://blog.csdn.net/owldestiny/article/details/6102932

1、前提

[cpp]
view plaincopy

//头文件中添加包含文件
#include <Imm.h>
//源文件中添加lib文件
#pragma comment(lib,"imm32.lib")

2、调用

在需要调用软键盘的响应中添加:

[cpp]
view plaincopy

HIMC hIMC = ImmGetContext(pWnd->m_hWnd); // 接受输入的窗口句柄
DWORD dwConv, dwSent;
ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
if (dwConv & IME_CMODE_SOFTKBD)
dwConv &= ~IME_CMODE_SOFTKBD;// 这是关闭软键盘
else
dwConv |= IME_CMODE_SOFTKBD; // 打开软键盘
ImmSetConversionStatus(hIMC,dwConv,dwSent);
ImmReleaseContext(pWnd->m_hWnd,hIMC);

以上内容转自http://xiaoyueweiguang.blog.163.com/blog/static/117267556200991210485065/

修改一下,使得mfc中的输入框在获取输入焦点时使用软键盘,失去焦点时不使用软键盘

在dlg类中加入成员变量

[cpp]
view plaincopy

public:
// 软键盘
HIMC m_hIMCSoftKey;
public:
// 软键盘
DWORD m_dwConvSoftKey;
public:
// 软键盘
DWORD m_dwSentSoftKey;

在oninitdialog中加入

[cpp]
view plaincopy

g_hwnd=this->GetSafeHwnd();
//软键盘
m_hIMCSoftKey = ImmGetContext(g_hwnd);// 接受输入的窗口句柄
ImmGetConversionStatus(m_hIMCSoftKey,&m_dwConvSoftKey,&m_dwSentSoftKey);

在ondestroy中加入

[cpp]
view plaincopy

//软键盘
ImmReleaseContext(g_hwnd,m_hIMCSoftKey);

在onsetfocus中加入

[cpp]
view plaincopy

m_dwConvSoftKey |= IME_CMODE_SOFTKBD; // 打开软键盘
ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);

在onkillfocus中加入

[cpp]
view plaincopy

m_dwConvSoftKey &= ~IME_CMODE_SOFTKBD;// 这是关闭软键盘
ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: