第一范文网 - 专业文章范例文档资料分享平台

vc启动软键盘

来源:用户分享 时间:2025/7/19 20:02:58 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

通过按钮打开windows的软键盘

1.直接运行微软系统自带的虚拟键盘程序“osk.exe”

在普通MFC项目中可以调用ShellExecute或者WinExec方法来直接运行微软系统自带的虚拟键盘程序“osk.exe”,十分方便一句话就可以搞定。

ShellExecute:

ShellExecute(GetSafeHwnd(), NULL, _T(\), NULL, NULL,SW_NORMAL); WinExec:

WinExec(\,SW_NORMAL);

程序运行出来的界面:

2.添加\和\来调出软键盘

在你要调出软键盘的代码中引入\头文件(若项目里没有这两个文件,则将这两文件复制到项目根目录里,并将\添加到工程里) #include

#pragma comment(lib,\

然后在调出软键盘的消息事件中添加如下代码即可:

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);

但这种方法似乎只能在输入法开启的状态下才可以打开软键盘

3.在WINCE上运行的MFC中使用SipApi来调出软键盘

为项目添加\头文件,并在代码中把这个头文件包括进来 调出软键盘的方法调用起来很简单,就一句话而已。 打开软键盘: SipShowIM(SIPF_ON); 关闭软键盘:

SipShowIM(SIPF_OFF); 运行效果:

下面是vc实现的

void CHideDlgDlg::OnButton10() {

// TODO: Add your control notification handler code here CWnd * pWnd = GetDlgItem(IDC_TREE1); if(pWnd)

{

pWnd->SetFocus();

HIMC hIMC = ImmGetContext(pWnd->m_hWnd); DWORD dwConv, dwSent; DWORD dwTemp;

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); } }

实际上好像vc有更简单的方法, MSDN的解决方案是用:

SHSipPreference(hWnd, SIP_UP); SHSipPreference(hWnd, SIP_DOWN);

我从来没有用过vc,也不知对不对?用bcb怎么实现呀? 嗯,有点意儿,代码修正如下:

HIMC hIMC = ImmGetContext(Form1->Handle); DWORD dwConv, dwSent; DWORD dwTemp;

ImmGetConversionStatus(hIMC,&dwConv,&dwSent); if (dwConv & IME_CMODE_SOFTKBD)

{ dwConv &= ~IME_CMODE_SOFTKBD; }

else{ dwConv |= IME_CMODE_SOFTKBD; };

ImmSetConversionStatus(hIMC,dwConv,dwSent); ImmReleaseContext(Form1->Handle,hIMC);

就你给出的VC代码来说,只能实现先打开输入法后,再打开软键盘的功能。 也就是说,这段VC代码及我给你的BCB的代码都是建立在IME式的输入法的基

础之上的。

能够打开你的软键盘,也能关闭(请试我后来给你的那段程序)。 本人在win2k3下测试通过,应该没有问题。 此外,给你一个偏方:

使用DOS命令运行:osk.exe,呵呵。(XP/win2k/win2003下有效)

以上VC代码利用的是IME式的输入法的基础之上的,纯E文输入是不依靠输入法的。

也就是说,输入组件中它吖就没那玩意儿,你上哪调去啊,呵呵。

怎么办呢?

方法一:自个写软键盘。

方法二:使用系统自带osk.exe。 方法三:把osk.exe打包到你的程序中,去调(这玩就保证没问题啦,哈哈)。

就不知道这个osk.exe是不是纯绿软件哦,呵呵。

据我所知,泡泡堂等玩的软键盘就是自个写的,这玩最可靠了。 别的方法应该没了。

对于代码的解释,实在不必了吧,就那几行,猜也猜个八九不离十了。 实在不懂,你去网上查一下那几个函数就明白了。

//打开系统自带osk.exe system(\

ShellExecute(NULL, _T(\W);

搜索更多关于: vc启动软键盘 的文档
vc启动软键盘.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3g6uv5hc0s9sc9l3qd4u_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top