题
我有以下问题:
我打开对话、开放的SIP键盘来填写表格,然后尽量减少SIP。然后当我接近的当前对话和返回的主要对话SIP键盘再次出现。任何人都不会知道我怎么会显示SIP键盘的通过程序或者更好的可以做些什么来解决描述问题。一旦使用最小化的键盘,它不应该出现在屏幕上对话交换。
谢谢!
解决方案
我们使用 SHSipPreference 来控制所显示的SIP在我们的应用。我知道它的工作与MFC和它规定国家的SIP的窗口,这样你可以设定一次,你知道SIP国家将恢复到设置国家的每一个时间的窗口。
我从来没听说过SipShowIM但是我没有看到在MSDN页链接:
标准方法的表示, 隐藏SIP(SIPShowIM)表现出 一些问题在MFC的对话。
其他提示
您会想调用的 SipShowIM ()在coredll。看到此MSDN文章:
可以使用Microsoft.WindowsCE.Forms.InputPanel组件。您可以显示/隐藏SIP编程方式使用Enabled属性。有一个在一个工具箱输入面板组件。
还有为输入面板,你可以处理EnabledChanged事件。通常你要显示的SIP以文本框的GetFocus事件。
您使用MFC?
问题是SIP状态是每对话,而不是每个应用程序。所以,你需要显示/隐藏其内的每个单独的对话框。
void CAaa::OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized )
{
if(nState == WA_ACTIVE || nState == WA_CLICKACTIVE)
{
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR|SHIDIF_SIPDOWN | SHFS_HIDETASKBAR;
shidi.hDlg = m_hWnd;
SHInitDialog(&shidi);
SHFullScreen(m_hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON |SHFS_HIDESTARTICON);
}
}
和您应该删除任何全屏或任务栏键如果不需要:)
和其它东西的使用方法:
SHSipPreference(m_hWnd,SIP_UP); // SIP_DOWN
或者甚至:
HWND hwndCB = ::FindWindow(_T("SipWndClass"),_T(""));
::ShowWindow( hwndCB, SW_SHOW);
hwndCB = ::FindWindow(_T("MS_SIPBUTTON"),NULL);
::ShowWindow( hwndCB, SW_SHOW);
但后者可能不那么标准:)不过它的工作原理。 试戴。
...在其他一些对话我要在键盘布局设置为数字, 所以我说在构造以下行: SendMessage消息(EM_SETINPUTMODE,0,EIM_NUMBERS);但是,如果我删除此 线I解决一个问题,并创建另一个
GetLastError函数()或者是图6(无效的句柄)或120(不支持)。 EM_SETINPUTMODE只支持智能手机和智能手机不具备的SIP。请参见 http://msdn.microsoft.com/en-us/library/bb416452。 ASPX 。