kvv's home

Форма входа

Категории раздела

Лекции [14]
Разное [4]
Статьи на тему WM, не попавшие в лекции по разным причинам.

Поиск

Каталог статей

Главная » Статьи » Программирование под Windows Mobile » Лекции

Часть 4. опять продолжение. SIP и полноэкранный режим

SIP


Soft Input Panel (SIP) - основной способ ввода текстовой информации для PocketPC.

Принятые обозначения:
SIP button – кнопка включения/выключения клавиатуры
SIP - сама экранная клавиатура
IM – (input method) - режим ввода (буквенный , цифровой, символьный, распознавание текста и т.д. в зависимости от конкретной модели PPC).






Работа с 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);
дает нам истинное полноэкранное приложение:


Вызов:

SHFullScreen(hWnd, 0 | SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);

дает нам окно с таскбаром без кнопки старт:



Вызов:

SHFullScreen(hWnd, SHFS_HIDESIPBUTTON);

Дает нам окно без тулбара.


Категория: Лекции | Добавил: kvv (28.09.2007) | Автор: Владимир Кошелев E W
Просмотров: 3014 | Комментарии: 5 | Теги: Лекции | Рейтинг: 0.0/0
Всего комментариев: 4
0
4 Jan   [Материал]
I read your potsnig and was jealous

0
3 Palmman   [Материал]
Приветствую.
Мучаюсь с полноэкранным режимом.
Первый способ (SHInitDialog) у меня не хочет работать. На экране остается верхняя и нижняя панель.
Второй способ (SHFullScreen) работает, если его использовать в обработке WM_ACTIVATE.
Но, когда фокус переходит на EditBox и появляться клавиаура, приложение уходит с полноэкранного режима.

Есть еще одна проблема, в приложении несколько таких полноэкранных диалогов, и при переходе между ними мелькают нижние и верхние стандартные панели.


0
2 kvv   [Материал]
Да, есть желание расширить материалы по SIP. Разобрать подробно пример программы переключателя клавиатур и создания собственной клавиатуры.

0
1 Влад   [Материал]
Здравствуйте, а в дальнейшем вы не планируете подробненько разобрать тему "пользовательских" SIP клавиатур?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Друзья сайта

  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Облако тэгов