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

时间:2008-11-27 14:16:26

标签: c++ windows-mobile pocketpc

我有以下问题:

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

谢谢!

5 个答案:

答案 0 :(得分:2)

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

http://msdn.microsoft.com/en-us/library/ms838341.aspx

答案 1 :(得分:1)

我们使用SHSipPreference来控制应用程序中SIP的显示。我知道它适用于MFC并且它设置窗口的SIP状态,因此您可以设置一次,并且您知道每次显示窗口时SIP状态将​​恢复到您的设置状态。

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

  

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您使用的是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);

但后者可能不那么标准:)仍然有效。 试试吧。

答案 4 :(得分:0)

  

...在其他一些对话框中,我想将键盘布局设置为数字,   所以我在构造函数中添加了以下行:   SendMessage(EM_SETINPUTMODE,0,EIM_NUMBERS);但是如果我删除它   我解决了一个问题并创建了另一个问题

GetLastError()是6(无效句柄)或120(不支持)。 EM_SETINPUTMODE仅在SmartPhones上受支持,而SmartPhones没有SIP。请参阅http://msdn.microsoft.com/en-us/library/bb416452.aspx