Запретить Pocket-PC переходить в ландшафтный режим - PullRequest
2 голосов
/ 20 апреля 2009

У меня есть приложение для Windows Mobile (написанное на C #), которое работает только в портретном режиме. Есть ли программно запретить системе автоматически переводить мое приложение в альбомный режим без необходимости изменения настроек системы Windows Mobile?

Платформа: Windows Mobile 6.1 Professional

Ответы [ 3 ]

4 голосов
/ 20 апреля 2009

Это плохая, плохая, плохая идея. Устройство является устройством общего назначения, предназначенным для запуска нескольких приложений. Платформа должна , а не быть подчиненной вашему приложению. Это все равно что сказать, что у вас есть настольное приложение, которое работает только с разрешением 640x480, поэтому вы должны иметь возможность заблокировать чей-либо компьютер с таким разрешением.

Лучшее решение - либо на самом деле исправить ваше программное обеспечение (задыхаться) для поддержки обеих ориентаций (и вы знаете, что есть и другие разрешения, так и устройства с квадратным экраном, верно?), Либо чтобы ваше приложение было как минимум всплывающим окно сообщения какого-либо типа, информирующее пользователя о совместимости при выборе неподдерживаемого разрешения или ориентации.

Что касается того, «как» это сделать - вы не можете. Поворот обрабатывается драйвером дисплея, в частности, вызывая ExtEscape с DRVESC_SETSCREENROTATION. В стандартном драйвере GPEFlat , который поставляется с PB, он, в свою очередь, вызывает DynRotate и продолжает вызывать SetRotation (вы можете посмотреть на общедоступный источник в eval edition, если вы действительно хотите знать, как все это работает) ,

Суть в том, что для перехвата этого вызова вам потребуется либо создать заменяющий драйвер дисплея, либо хотя бы какую-нибудь прокладку, которую вы вставите в качестве драйвера, который, в свою очередь, вызывает существующий. Ничего из этого не произойдет в управляемом коде.

1 голос
/ 20 апреля 2009

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

Но вы можете изменить ориентацию экрана так, как вам нравится, поскольку вы, очевидно, знаете, что это должно быть. Подробнее см. Разработка приложений, ориентированных на ориентацию экрана -> Изменение ориентации экрана .

Редактировать: Просто понял, что вы застряли с C # / .NETCF. Не знаю эту часть структуры, но я оставлю здесь ответ для справки, возможно, он укажет вам правильное направление. Понятия, изложенные в статье «Тат», конечно, остаются в силе.

0 голосов
/ 20 апреля 2009

Какая версия Windows Mobile?

Будет ли ваше приложение использоваться только контролируемой группой пользователей (например, приложением внутренней компании), где аппаратное обеспечение может контролироваться?

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

Если вы хотите установить портретный режим, вы можете сделать это, позвонив по номеру

SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;

Это переведет все устройство в портретный режим. Если вы решили пойти дальше, я бы порекомендовал установить ориентацию в активированном вами событии формы и проверить ориентацию в событии изменения размера. Это вернет устройство в вертикальное положение, когда ваше приложение сфокусируется, если кто-нибудь изменит его на альбомное.

Также может быть полезно сохранить начальную ориентацию при запуске приложения и перенастроить устройство на нее при выходе из приложения.

...