Форма отображения не максимизирована с границами в Windows Mobile - PullRequest
1 голос
/ 28 октября 2008

Мне нужно создать диалоговое окно состояния для приложения Windows Mobile (C # 2.0), которое необходимо обновить, чтобы отсутствовал MessageBox. Я попытался просто создать новый класс Form, изменить размер и вызвать ShowDialog, но он всегда отображается в полноэкранном режиме (за исключением, конечно, строки заголовка). Единственный способ выяснить, как отобразить его маленьким, - установить для FormBorderStyle значение None, но тогда у него действительно вообще нет границ или строки заголовка!

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

Есть идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 28 октября 2008

Это сообщение в блоге должно помочь: ' Создание не полноэкранных форм и пользовательских MessageBoxes '.

2 голосов
/ 28 октября 2008

Проблема здесь заключается в самой оболочке WinMo. Что не очевидно, так это то, что заголовок формы (вверху экрана) на самом деле не является заголовком формы, которую вы видите, - это совершенно другое приложение. Таким образом, чтобы заставить форму «плавать», необходимо изменить способ, которым оболочка обрабатывает отображение формы. Быстрый и грязный способ - установить для Form BorderStyle значение none, но тогда вы потеряете строку заголовка. Тогда можно вручную нарисовать его с помощью FillRect и DrawString в OnPaint. Не слишком сложно и не требует никаких P / Invoke shenanigans, но для этого требуется, чтобы вы учитывали новый заголовок при компоновке элементов управления.

Другой вариант - использовать P / Invoke и манипулировать битами стиля формы самостоятельно. Это работает хорошо, но позаботьтесь о том, чтобы вы делали это в правильном месте в коде, так как некоторые биты должны быть установлены при создании окна. Также остерегайтесь оболочки, так как она может захотеть вернуть вам биты назад - поэтому этот механизм требует большего тестирования и внимания к деталям. ИМО, это лучший маршрут, и я подробно об этом написал в блоге здесь . Эта запись в блоге не относится конкретно к плавающим формам, но она хорошо описывает манипуляции со стилем. Подробнее о неэкранных формах см. моя другая запись в блоге здесь .

...