【问题标题】:how to show/hide SIP on Pocket PC如何在 Pocket PC 上显示/隐藏 SIP
【发布时间】:2010-09-24 08:16:05
【问题描述】:

我有以下问题:

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

谢谢!

【问题讨论】:

  • 我找到了导致这种行为的原因。在其他一些对话框中,我想将键盘布局设置为数字,因此我在构造函数中添加了以下行: SendMessage(EM_SETINPUTMODE, 0, EIM_NUMBERS);但是,如果我删除这一行,我会解决一个问题并创建另一个问题...
  • 你删除的那行实际上没有用,对吧(我的意思是它没有在数字模式下拉起键盘,对吗)?
  • @Niko:嘿,你的问题有答案吗..我也需要它..请告诉我..

标签: c++ windows-mobile pocketpc


【解决方案1】:

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

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

【讨论】:

  • 我正在用 C++ 编写应用程序
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我从未听说过 SHSipPreference。 :) 基于版本支持,它看起来非常旧。我不会靠近 MFC 对话框,但在 C#/.NET CF 中使用 SipShowIM 时我从来没有遇到过任何问题。
    • SHSipPreference 是 Windows CE 3.0 及更高版本,SIPShowIM 是 Windows CE OS 2.10 及更高版本,请参阅msdn.microsoft.com/en-us/library/ms941818.aspx 我的 API 看起来更好用且更新:) SIPShowIM 设置状态无论在哪个窗口, SHSipPreference 是特定于窗口且具有粘性的。
    • SipShowIM: "应用程序必须调用此函数来显示输入面板。"结案。 :)
    • 这可能是我参与过的最专业、最晦涩的辩论。:)
    • 每个人都拥有... Niko 和其他人现在可以根据明智的选择选择他们希望使用的任何 API,SHSipPreference 自然 :)
    【解决方案4】:

    你在使用 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);
    

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        相关资源
        最近更新 更多