如何改变WINCE的SIP(软键盘)的显示位置我的程序中的输入框总被软键盘挡住,请问如何通过编程改变WINCE的SIP
如何改变WINCE的SIP(软键盘)的显示位置
我的程序中的输入框总被软键盘挡住,请问如何通过编程改变WINCE的SIP(软键盘)的显示位置。
注:我在网上看到
void CSIPDemoDlg::OnButtonMove()
{
SIPINFO SipInfo;
memset(&SipInfo,0,sizeof(SipInfo));
SipInfo.cbSize=sizeof(SIPINFO);
BOOL bRes = SipGetInfo(&SipInfo);
if ( bRes )
{
CRect rc(SipInfo.rcSipRect);
rc.OffsetRect(0,-20); // 修改此处可以更改显示位置
SipSetDefaultRect(&rc);
CLSID clsid;
if ( SipGetCurrentIM(&clsid) )
{
SipSetCurrentIM(&clsid);
}
SipShowIM(SIPF_ON);
}
}
但是它用了CRECT这个MFC的类,我不想用MFC的类或是函数,就用WIN32的类或函数
[解决办法]
关注。。。
[解决办法]
rcSipRect是一个RECT类型结构体的变量,跟MFC无关,你手动改一下rcSipRect的内容就行了
[解决办法]
SIP 函数肯定是可以实现的
LZ查一下Help文档吧
[解决办法]
Crect不是MFC的类吗
[解决办法]但是RECT只是一个结构体,你可以看一下SIPINFO的定义,里面写的很清楚
[解决办法]我是这样改的
if ( bRes )
{
rc.top = SipInfo.rcSipRect.top+200;
rc.bottom = SipInfo.rcSipRect.bottom+200;
rc.left = SipInfo.rcSipRect.left;
rc.right = SipInfo.rcSipRect.right;
//CRect rc(SipInfo.rcSipRect);
//rc.OffsetRect(0,240);
SipSetDefaultRect(&rc);
CLSID clsid;
if ( SipGetCurrentIM(&clsid) )
{
SipSetCurrentIM(&clsid);
}
SipShowIM(SIPF_ON);
}
软键盘显示不出来
[解决办法]SipGetInfo之后,得到了SIPINFO结构体的内容,你修改完内容再SipSetInfo就行了啊,不用SipSetDefaultRect函数……
[解决办法]SIPINFO SipInfo;
memset(&SipInfo, 0, sizeof(SipInfo));
SipInfo.cbSize = sizeof(SipInfo);
RECT rect;
//GetClientRect(&rect)更换为获得相应控件的代码
//本人这里的代码是在一个CEdit继承类中执行的
GetClientRect(&rect);
ClientToScreen(&rect);
BOOL bRet = SipGetInfo(&SipInfo);
if (bRet)
{
SipInfo.rcSipRect.top = rect.bottom;
SipInfo.rcSipRect.bottom = rect.bottom;
SipInfo.rcSipRect.left = rect.left;
SipInfo.rcSipRect.right = rect.left;
SipSetInfo(&SipInfo);
}
SipShowIM(SIPF_ON);
这个代码应该可以实现
[解决办法]先要调用 SHOW: SipShowIM(SIPF_ON),然后改变位置,不想要时关掉就OK啦
[解决办法]函数都用了,还不用MFC的,呵呵
[解决办法]我原来显示不出来是因为显示屏幕外面去了,我用的是小键盘,但是用大键盘没什么反应,SipSetDefaultRect(&rc);不起作用
请问大键盘和小键盘有什么区别啊
[解决办法]我想试试movewindow,但是如何得到软键盘的hwnd啊
[解决办法]用FindWindow找吧
[解决办法]
FindWindow总是返回unusedxxx,然后程序就崩溃了,弹出访问冲突
[解决办法]
关注 关注
[解决办法]
谢谢,学习了。