我想改变高度,在select接口中做如下代码:
BOOL fRes = FALSE;
SIPINFO si;
memset (&si, 0, sizeof (SIPINFO));
si.cbSize = sizeof(SIPINFO); // sizeof (si)= 48
if (SipGetInfo(&si))
{
si.fdwFlags &= ~SIPF_ON;
si.fdwFlags ¦=SIPF_DOCKED;
si.rcSipRect.top=50; //at least >26
si.rcSipRect.bottom=181;
si.rcSipRect.left=100;
si.rcSipRect.right=360;
fRes = SipSetInfo(&si);
}
SipShowIM(SIPF_ON);
GetWindowRect (hwndSip, &rect);
GetClientRect (hwndSip, &rect);
SipShowIM(SIPF_OFF);
//############################
memset (&si, 0, sizeof (SIPINFO));
si.cbSize = sizeof(si);
si.cbSize = sizeof(SIPINFO); // sizeof (si)= 48
if (SipGetInfo(&si))
{
si.fdwFlags &= ~SIPF_ON;
si.fdwFlags &=~SIPF_DOCKED;
si.rcSipRect.top=30; //at least >26
si.rcSipRect.bottom=60;
si.rcSipRect.left=0;
si.rcSipRect.right=140;
fRes = SipSetInfo(&si);
}
SipShowIM(SIPF_ON);
发现sipsetinfo只能设置sip window的窗口位置和显示、隐藏,无法改变窗口大小!!
top可以人为设置,但bottom却自动变为top+80,就是说人为设置bottom是不起作用的。
left和right也有同样问题。
我想了一种思路,先得到sip窗口的句柄,然后人为将sip窗口扩充,这样就变大了,但不知道这种方法是否可行。
那么如何设置sip window的高度为 > 80 pixel 呢?这是个问题。
有人能解决掉吗?
------解决方案--------------------
In Windows CE 2.10 and later, the SipSetInfo function can either set a SIPINFO structure with the current software-based input panel state or take a SIPINFO structure and use its values to set the current software-based input panel state.
In Windows CE 3.0 and later, you cannot use SipSetInfo to resize the SIP window. Use an IM to resize the SIP window.
------解决方案--------------------
可以利用SipSetDefaultRect这个函数来改变苏茹面板的位置(不能改变大小),但是它不会立即生效,除非你重新选择输入法。
SIPINFO SipInfo;
memset(&SipInfo,0,sizeof(SIPINFO));
SipInfo.cbSize=sizeof(SIPINFO);
SipGetInfo(&SipInfo);
SipInfo.rcSipRect.top-=50;
SipInfo.rcSipRect.bottom-=50;
if(TRUE==SipSetDefaultRect(&SipInfo.rcSipRect))
{
SipShowIM(SIPF_ON);
}
------解决方案--------------------
我说的那种方法只能改变位置,不能改变大小。而且它不会立即生效,除非你重新选择其他的输入法,这时才会生效。
------解决方案--------------------
如果你只是想改变位置的话用上面的方法就可以了,如果想样改变大小Use an IM to resize the SIP window.