我有以下问题:
我打开对话框,打开SIP键盘填写表单,然后最小化SIP。然后,当我关闭当前对话框并返回主对话框时,SIP键盘再次出现。有谁知道如何以编程方式显示/隐藏SIP键盘或更好地解决所描述的问题可以做什么。一旦用户最小化键盘,它就不应出现在对话框切换的屏幕上。
谢谢!
答案 0 :(得分:2)
您需要在coredll中调用 SipShowIM ()。请参阅此MSDN文章:
答案 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。