C++ 如何在Pocket PC上显示/隐藏SIP

C++ 如何在Pocket PC上显示/隐藏SIP,c++,windows-mobile,pocketpc,C++,Windows Mobile,Pocketpc,我有以下问题: 我打开对话框,打开SIP键盘来填充表单,然后最小化SIP。然后,当我关闭当前对话框并返回主对话框时,SIP键盘再次出现。是否有人知道如何以编程方式显示/隐藏SIP键盘,或者更好地知道如何解决所描述的问题。一旦用户最小化键盘,它就不应该出现在对话框切换的屏幕上 谢谢 您可以使用Microsoft.WindowsCE.Forms.InputPanel组件。可以使用Enabled属性以编程方式显示/隐藏SIP。工具箱中有一个InputPanel组件 您还可以处理InputPanel的E

我有以下问题:

我打开对话框,打开SIP键盘来填充表单,然后最小化SIP。然后,当我关闭当前对话框并返回主对话框时,SIP键盘再次出现。是否有人知道如何以编程方式显示/隐藏SIP键盘,或者更好地知道如何解决所描述的问题。一旦用户最小化键盘,它就不应该出现在对话框切换的屏幕上


谢谢

您可以使用Microsoft.WindowsCE.Forms.InputPanel组件。可以使用Enabled属性以编程方式显示/隐藏SIP。工具箱中有一个InputPanel组件


您还可以处理InputPanel的EnabledChanged事件。您通常希望在文本框的GetFocus事件中显示SIP。

您希望在coredll中调用SipShowIM()。请参阅此MSDN文章:

我们用于控制应用程序中SIP的显示。我知道它与MFC一起工作,它为窗口设置SIP状态,因此您可以设置一次,并且您知道每次显示窗口时,SIP状态都将恢复到您设置的状态

我从未听说过SipShowIM,但我确实在MSDN页面上看到链接:

显示和显示的标准方法 隐藏SIP(SIPShowIM)展品 MFC对话框中的一些问题

你在用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_编号);但是如果我删除这个 第一行解决一个问题并创建另一个问题


GetLastError()为6(无效句柄)或120(不受支持)。EM_SETINPUTMODE仅在智能手机上受支持,智能手机没有SIP。请参阅。

我正在用C++编写应用程序,我已经找到了导致这种行为的原因。在另一个对话框中,我想将键盘布局设置为数字,因此我在构造函数中添加了以下行:SendMessage(EM_SETINPUTMODE,0,EIM_NUMBERS);但是,如果我删除这一行,我会解决一个问题并创建另一个问题…你删除的那一行实际上不起作用,对吗(我的意思是它没有在数字模式下打开键盘,对不对)?@Niko:嘿,你的问题有答案吗。。我也需要它。。请让我知道……我从来没有听说过shsip。:)基于版本支持,它看起来非常旧。我不会接近MFC对话框,但我在C#/.NET CF.SHSipPreference是Windows CE 3.0及更高版本,SipShowIM是Windows CE OS 2.10及更高版本,请看我的看起来更适合使用且更新的API:)SipShowIM设置状态无论什么窗口,SHSipPreference都是特定于窗口且粘性的。SipShowIM:“应用程序必须调用此函数才能显示输入面板。”案例结束。:)这可能是我参与过的最专业的模糊辩论。:)每个人都有自己的…Niko和其他人现在可以根据知情的选择选择他们想要使用的任何API,SHSipPreference:)