Обработчик событий для окна «Свернуть и развернуть» - PullRequest
1 голос
/ 14 ноября 2008

Я занимаюсь разработкой приложения для PocketPC. Когда приложение запускается, вызывается пользовательская функция SetScreenOrientation (270), которая поворачивает экран. Когда приложение закрывается, вызывается функция SetScreenOrientation (0), которая восстанавливает ориентацию экрана.

Таким образом, ориентация экрана не восстанавливается, если пользователь свернул приложение, а это недопустимо.

Кто-нибудь знает, куда (в каких обработчиках событий) следует вызывать SetScreenOrientation (int angle) для установки ориентации экрана при запуске приложения, восстановления ориентации при сворачивании, установки ориентации при максимизации и восстановления ориентации при закрытии?

На самом деле я не знаю, какой обработчик событий обрабатывает событие Минимизировать и развернуть.

Ответы [ 4 ]

2 голосов
/ 14 ноября 2008

Исходя из моего опыта работы с Windows CE, вы должны обрабатывать сообщения WM_SIZE или WM_WINDOWPOSCHANGED . Если вы работаете над PocketPC, я бы посоветовал вам сначала взглянуть на сообщение WM_WINDOWPOSCHANGED, потому что я не уверен, что WM_SIZE имеет нужные параметры, которые вам нужны.

Из структуры WINDOWPOS сообщения WM_WINDOWPOSCHANGED взгляните на элемент флагов, в частности SWP_SHOWWINDOW и SWP_HIDEWINDOW.


Конкретная версия сообщений, на которую вам нужно посмотреть, зависит от используемой операционной системы. Операционная система Pocket PC построена на Windows CE 3.0 (и ниже), а Windows Mobile теперь построена на Windows CE 5.0 (даже на Windows Mobile 6), но также на Windows CE 4. (Источник)

Так что просто посмотрите в соответствующем разделе в MSDN ОС, для которой вы пишете.

2 голосов
/ 14 ноября 2008

Правильное сообщение: WM_SIZE , но ответ Daemin указывает на неправильный раздел справки WM_SIZE. Проверьте wParam. Будьте осторожны, поскольку ваше окно может быть развернуто, но скрыто.

0 голосов
/ 18 ноября 2008

Это действительно зависит от платформы, но я бы выбрал WM_WINDOWPOSCHANGED или OnShow. Это не wm_size .. Это не всегда выбрасывается на всех платформах. Casio не запускает событие размера, когда вы ожидаете этого. TDS и Symbol делают.

Несмотря на то, что MSDN - отличный источник информации, помните, что не все ОС созданы одинаковыми. В мире PPC провайдер оборудования может создавать свои собственные ОС, а иногда пропустить или умышленно игнорировать их.

У меня есть платформа (имя скрыто для защиты ... ну, я), которая имеет левую и правую кнопки ... Когда вы нажимаете их, вы ожидаете, что сможете ловить VK_LEFT, VK_RIGHT .. буду неправ. Вы на самом деле получаете ';' или же ':'. Как это для удара в штаны.

0 голосов
/ 14 ноября 2008

Я не знаю, как они называются в мире C ++, но в .NET Compact Framework событие Resize формы приложения будет вызываться, когда вы минимизируете / увеличиваете окно, а затем в коде события вы проверяете WindowState свойство формы, чтобы увидеть, минимизирована ли она или mazimized.

Изменение состояния вашего КПК изнутри вашего приложения рискованно (хотя есть много веских причин для этого), потому что если ваше приложение вылетает, оно оставит КПК в любом состоянии, в котором оно находилось. Я сделал много приложений типа киосков (полноэкранных) в Windows Mobile, и один из приемов, позволяющих сделать это эффективно, состоит в том, чтобы скрыть строку заголовка WM (верхняя строка с кнопкой запуска Windows), чтобы она не вспыхивала для разделения второй каждый раз, когда вы открываете новую форму. Если приложение дает сбой, панель Windows остается невидимой, пока вы не перезагрузите устройство, что не очень хорошо. По крайней мере, при повороте экрана пользователь может восстановить его вручную.

...