请问一个虚拟键盘如何实现???高分求救,不够在加!!!
请问各位如何实现虚拟键盘?现在一点概念都没有,因为如果我自己设计的按键后,焦点就自动跑到我设计的键盘上面了,原来我要输入的地方焦点一没我就不能输入字母在上面了,请问我应该如何做阿???如何做到即使我在自己设计的键盘上操作,而焦点仍然在我指定要输入的地方???谢谢
问题点数:100、回复次数:7Top
1 楼i_noname(晚九朝五)回复于 2004-09-01 07:08:12 得分 0
让你的键盘把焦点给传回去Top
2 楼holyeagle(一杯清茶)回复于 2004-09-01 08:02:18 得分 70
http://www.vckbase.com/code/downcode.asp?id=1535
http://www.vckbase.com/code/downcode.asp?id=521
参考这几个程序吧Top
3 楼LongLongAgoImBoy(ThereIsAMe)回复于 2004-09-01 08:57:50 得分 10
用PostMessage()函数
比如你的CEdit为m_MyEdit
则m_MyEdit.PostMessage(WM_CHAR, 'A');//可以是任意字符
示例代码如下:
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rcWnd;
CRect rc(1,1,20,12);//你的虚拟按钮位置
if(rc.PtInRect(point))//点击位置
m_MyEdit2.PostMessage(WM_CHAR, 'A');
CDialog::OnLButtonDown(nFlags, point);
}
Top
4 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-01 09:08:18 得分 0
SetFocus?Top
5 楼BLsoft(網龍ζ龍活)(Cyber-Security of [MVP])回复于 2004-09-01 09:48:48 得分 10
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);
}
}
Top
6 楼rabo(不哭死人)回复于 2004-09-01 10:18:47 得分 10
一按下一个键,就POSTMESSAGE给那个EDITBOX就行了。不用焦点。Top
7 楼haifeng_su(goldust)回复于 2004-09-01 20:29:09 得分 0
输入的部分没问题,请问可否给出关于“虚拟键盘出来后,点击上面按键,但是焦点仍然在别的程序上(未知程序) 上,别的程序不一定是editbox,还可能是comboBox或者memo,例如IE的地址栏什么的“ 的程序代码?主要是焦点这个问题我不明白,模拟按键的部分我知道如何做,谢谢。Top




