SIP
Soft
Input Panel (SIP) - основной способ ввода текстовой информации для
PocketPC.
- Принятые
обозначения:
- SIP
button – кнопка включения/выключения клавиатуры
- SIP -
сама экранная клавиатура
- IM –
(input method) - режим ввода (буквенный , цифровой, символьный,
распознавание текста и т.д. в зависимости от конкретной модели PPC).
![](http://kvv.my1.ru/_pu/0/62152.png)
Работа
с SIP сводится к возможности ее программного включения или
выключения.
Делается это
несколькими способами (в зависимости от предпочтений)
Можно
использовать низкоуровневый доступ к окну клавиатуры и показывать
(прятать) его с помощью функции ShowWindow. Хендл окна можно найти с
помощью функции FindWindow, указав в качестве параметра класс
SipWndClass. Данный способ не является универсальным и может быть
несовместим со следующими версиями Windows.
Можно
использовать специальную функцию ShellAPI - SHSipPreference :
Показать
окно:
SHSipPreference(hWnd,
SIP_UP);
Спрятать
окно:
SHSipPreference(hWnd,
SIP_DOWN);
Можно
позволить системе самой показывать и прятать SIP. Для этого надо в
описании ресурса диалога добавить описание специального контрола:
CONTROL "",
-1, WC_SIPPREF, NOT WS_VISIBLE, -10, -10, 5, 5
И
в функции инициализации приложения вызвать функцию
SHInitExtraControls()
При этом окно
SIP будет появляться каждый раз, когда фокус встает на EditBox.
- Полноэкранные окна.
-
При создании диалогового окна,
желательно вызывать функцию настройки параметров окна:
-
- SHINITDLGINFO shidi;
-
- shidi.dwMask = SHIDIM_FLAGS;
-
shidi.dwFlags = SHIDIF_DONEBUTTON
// включаем кнопку OK
- | SHIDIF_SIPDOWN // убираем
клавиатуру
-
| SHIDIF_SIZEDLGFULLSCREEN //
растягиваемся на весь экран
-
| SHIDIF_EMPTYMENU; // убираем
меню
-
shidi.hDlg = hDlg;
-
SHInitDialog(&shidi);
-
- Эту функицю обычно вызывают в
обработчике WM_INITDIALOG
-
В результате получаем диалоговое
окно, растянутое на весь экран.
-
- При созаднии немодального окна
можно использовать функцию SHFullScreen. Она позволяет прятать
некоторые элементы окна.
-
Покажем это на простых примерах:
-
Вызов
- SHFullScreen(hWnd,
SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);
-
дает нам истинное полноэкранное
приложение:
-
![](http://kvv.my1.ru/_pu/0/26200.gif)
- Вызов:
- SHFullScreen(hWnd, 0 |
SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);
- дает нам окно с таскбаром без
кнопки старт:
-
![](http://kvv.my1.ru/_pu/0/95105.gif)
- Вызов:
- SHFullScreen(hWnd,
SHFS_HIDESIPBUTTON);
-
- Дает нам окно без тулбара.
-
|