Pocket PCでSIPを表示/非表示する方法
-
11-07-2019 - |
質問
次の問題があります:
ダイアログを開き、SIPキーボードを開いてフォームに入力し、SIPを最小化します。次に、現在のダイアログを閉じてメインダイアログに戻ると、SIPキーボードが再び表示されます。 SIPキーボードをプログラムで表示/非表示にしたり、説明した問題を解決するために何ができるかを知っている人はいますか?ユーザーがキーボードを最小化すると、ダイアログの切り替え時に画面に表示されなくなります。
ありがとう!
解決
SHSipPreference を使用して、SIPの表示を制御します私たちのアプリケーション。 MFCで動作し、ウィンドウのSIPの状態を設定するので、一度設定すると、ウィンドウが表示されるたびにSIP状態が設定状態に復元されることがわかります。
SipShowIMについて聞いたことがありませんが、リンク先のMSDNページで確認しました:
標準的な表示方法と SIP(SIPShowIM)展示の非表示 MFCダイアログのいくつかの問題。
他のヒント
coredllで SipShowIM ()を呼び出します。このMSDN記事を参照してください:
Microsoft.WindowsCE.Forms.InputPanelコンポーネントを使用できます。 Enabledプロパティを使用して、プログラムでSIPを表示/非表示にできます。ツールボックスにInputPanelコンポーネントがあります。
また、処理できるInputPanelのEnabledChangedイベントもあります。通常、テキストボックスのGetFocusイベントでSIPを表示します。
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);
しかし、後者はそれほど標準的ではない可能性があります:)それでも動作します。 試してみてください。
...他のいくつかのダイアログで、キーボードレイアウトを数値に設定します。 そのため、コンストラクタに次の行を追加しました。 SendMessage(EM_SETINPUTMODE、0、EIM_NUMBERS);ただし、これを削除すると 行1つの問題を解決し、別の問題を作成します
GetLastError()は6(無効なハンドル)または120(サポートされていない)です。 EM_SETINPUTMODEは、スマートフォンでのみサポートされており、スマートフォンにはSIPがありません。 http://msdn.microsoft.com/en-us/library/bb416452を参照してください。 aspx 。