3

我有以下问题:

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

谢谢!

4

5 回答 5

2

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

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

于 2008-11-27T15:20:45.013 回答
1

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

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

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

于 2008-11-27T20:45:07.167 回答
0

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

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

于 2008-11-27T14:37:47.003 回答
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);

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

于 2009-01-12T23:34:47.563 回答
0

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

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

于 2010-12-26T22:39:54.173 回答