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

发布于 2024-07-09 08:38:54 字数 177 浏览 11 评论 0原文

我遇到以下问题:

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

谢谢!

I have the following problem:

I open the dialog, open the SIP keyboard to fill the form and then minimize the SIP. Then when I close the current dialog and return to the main dialog the SIP keyboard appears again. Does anyone know how could I show/hide SIP keyboard programatically or better what could be done to solve the described problem. Once the user minimizes the keyboard it should not appear on the screen on dialog switching.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

晨光如昨 2024-07-16 08:38:54

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

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

You'll want to call SipShowIM() in coredll. See this MSDN article:

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

隔岸观火 2024-07-16 08:38:54

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

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

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

We use SHSipPreference to control the display of the SIP in our applications. I know it works with MFC and it sets the state of the SIP for the window so you can set it once and you know the SIP state will be restored to your set state every time the window is shown.

I've never heard of SipShowIM but I did see on the MSDN page linked:

The standard method of showing and
hiding the SIP (SIPShowIM) exhibits
some problems in MFC dialogs.

落日海湾 2024-07-16 08:38:54

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

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

You can use the Microsoft.WindowsCE.Forms.InputPanel component. You can show/hide the SIP programmatically using the Enabled property. There is an InputPanel component at the toolbox.

There is also an EnabledChanged event for the InputPanel that you can handle. You usually want to show the SIP at a GetFocus event of a textbox.

明媚如初 2024-07-16 08:38:54

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

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

Are you using MFC?

The problem is SIP state is per dialog, not per application. So you need to show/hide it inside every dialog independently.

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);
}
}

And you should remove any Fullscreen or taskbar keys if not needed :)

And the other thing to use:

 SHSipPreference(m_hWnd,SIP_UP); // SIP_DOWN

Or even:

 HWND hwndCB = ::FindWindow(_T("SipWndClass"),_T(""));
      ::ShowWindow( hwndCB, SW_SHOW);
      hwndCB = ::FindWindow(_T("MS_SIPBUTTON"),NULL);
      ::ShowWindow( hwndCB, SW_SHOW);

But the latter could be not so standard :) Still it works.
Try them.

〃温暖了心ぐ 2024-07-16 08:38:54

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

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

...In some other dialog I want to set the keyboard layout to numeric,
so I added the following line in the constructor:
SendMessage(EM_SETINPUTMODE, 0, EIM_NUMBERS); However if I remove this
line I solve one issue and create another one

GetLastError() is either 6 (invalid handle) or 120 (not supported). EM_SETINPUTMODE is only supported on SmartPhones, and SmartPhones don't have SIPs. See http://msdn.microsoft.com/en-us/library/bb416452.aspx.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文