Frage

Ich habe folgendes Problem:

ich den Dialog zu öffnen, öffnen Sie die SIP-Tastatur, um die Form und dann minimieren, um die SIP zu füllen. Dann, wenn ich den aktuellen Dialog zu schließen und zum Hauptdialog der SIP-Tastatur erscheint wieder. Wer weiß, wie kann ich zeigen / verstecken SIP Tastatur programmatisch oder besser, was getan wird, um das beschriebene Problem zu lösen. Sobald der Benutzer die Tastatur minimiert sollte es nicht auf dem Bildschirm auf Dialog Schalt erscheinen.

Danke!

War es hilfreich?

Lösung

Wir verwenden SHSipPreference die Anzeige des SIP zu steuern, unsere Anwendungen. Ich weiß, es funktioniert mit MFC und es setzt den Status des SIP für das Fenster, damit Sie es einmal eingestellt ist und Sie wissen, dass der SIP-Zustand wird jedes Mal auf Ihren eingestellten Zustand gestellt werden, das Fenster angezeigt wird.

Ich habe noch nie von SipShowIM gehört, aber ich auf der MSDN-Seite nicht sehen verknüpft:

  

Die Standardmethode zu zeigen und   Ausblenden der SIP (SIPShowIM) Exponate   einige Probleme in MFC Dialoge.

Andere Tipps

Sie wollen anrufen SipShowIM () in coredll. Sehen Sie in diesem MSDN-Artikel:

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

Sie können die Microsoft.WindowsCE.Forms.InputPanel Komponente verwenden. Sie können die SIP programmatisch mit der Enabled-Eigenschaft ein- / auszublenden. Es gibt eine Inputpanel-Komponente in der Toolbox.

Es gibt auch ein EnabledChanged Ereignis für die Inputpanel, die Sie behandeln können. Sie wollen in der Regel SIP zu GetFocus Fall einer Textbox zeigen.

Sind Sie mit MFC?

Das Problem ist, SIP-Zustand pro Dialog, nicht pro Anwendung. Sie müssen also zeigen / verstecken innen unabhängig jeden Dialog.

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

Und Sie sollten alle Vollbild oder Taskleiste Tasten entfernen, wenn nicht benötigt:)

Und die andere Sache zu verwenden:

 SHSipPreference(m_hWnd,SIP_UP); // SIP_DOWN

Oder auch:

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

Aber dieser konnte nicht so Standard sein :) Noch funktioniert es. Probieren Sie es.

  

... In einem anderen Dialog ich das Tastaturlayout numerisch einstellen möchten,   so habe ich die folgende Zeile im Konstruktor:   Sendmessage (EM_SETINPUTMODE, 0, EIM_NUMBERS); Allerdings, wenn ich diese entfernen   Linie, die ich ein Problem lösen und ein anderes erstellen

GetLastError () entweder 6 (invalid handelt) oder 120 (nicht unterstützt). EM_SETINPUTMODE wird nur auf SmartPhones unterstützt und SmartPhones haben nicht SIPs. Siehe http://msdn.microsoft.com/en-us/library/bb416452. aspx .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top