kvv's home

Форма входа

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

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

Поиск

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

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

Часть 4. Создание приложений под WM
Создание приложений под Windows Mobile.

Начинаем как и для проектов под Win32 с File-New


В появившемся окне выбираем тип приложения “Smart device” и один из шаблонов, в нашем случае Win32 Smart Device Project. Если мы хотим использовать MFC, то можно выбрать шаблон “MFC Smart Device Application” и так далее. Вводим имя и каталог будущего проекта и жмем Ok.

В загрузившемся визарде проекта устанавливаем поддержку нужных SDK и параметры, специфичные для приложения. В итоге имеем каркас приложения, который можно собрать и запустить на эмуляторе.


Несмотря на свою простоту, наше приложение уже поддерживает некоторые фичи, специфичные для Windows Mobile. Рассмотрим некоторые куски кода.
В функции InitInstance мы видим :
SHInitExtraControls();

...

hWnd = FindWindow(szWindowClass, szTitle);

if (hWnd)

{

SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));
return 0;

}

В этом куске кода мы сначала инициализируем поддержку специальных WM контролов, затем ищем предыдущий экземпляр программы и и передаем фокус на него. Это стандартное поведение Wm приложений связано с ограниченными ресурсами устройства. В принципе, тут мы можем закрыть предыдущую копию приложения и запустить новую, но правильнее передавать фокус на нее. Это позволит пользователю переключаться между запущенными программами с помощью меню Пуск.


Кусок кода, отвечающий за обработку сообытий WM_ACTIVATE (его посылает система, когда хочет передать нам фокус) и WM_SETTINGCHANGE ()оно посылается , когда меняются параметры экрана, например происходит поворот экрана.

case WM_ACTIVATE:

SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, FALSE);
break;
case WM_SETTINGCHANGE:
SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
break;


Следующий кусок кода – создание меню.

SHMENUBARINFO mbi;

memset(&mbi, 0, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = hWnd;
mbi.nToolBarId = IDR_MENU;
mbi.hInstRes = g_hInst;


if (!SHCreateMenuBar(&mbi))

{

g_hWndMenuBar = NULL;

}

else

{

g_hWndMenuBar = mbi.hwndMB;

}

Здесь мы вызываем функцию Shell API SHCreateMenuBar для создания меню на основе ресурса.

Вот с меню и начнем модифицировать приложение.=)


Категория: Лекции | Добавил: kvv (19.09.2007) | Автор: Владимр Кошелев E W
Просмотров: 6362 | Комментарии: 1 | Рейтинг: 4.0/1
Всего комментариев: 1
0
1 Regine   [Материал]
So that's the case? Quite a rveelation that is.

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

Друзья сайта

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

    Облако тэгов