Решение для перекрытия ошибок Windows? - PullRequest
3 голосов
/ 10 ноября 2009

WPF обещает нам много приятных вещей, но некоторые из них не соответствуют нашим ожиданиям.

Одним из примеров является окно без полей. Так что этот простой код добавлен в Xaml окна:

AllowsTransparency="True"
Background="Transparent"
WindowStyle="None"

заставит меня выглядеть так: (не обращайте внимания на уродливые цвета, которые они испортили во время обрезки экрана) альтернативный текст http://img29.imageshack.us/img29/5759/withoutborder.png

Слишком хорошо, чтобы быть правдой? Да, это так!

Это выглядит красиво, но как только пользователь пытается выбрать что-то из ComboBox, он не может этого сделать, потому что он открывается позади !! - да за окном. Конечно, тогда он не может видеть ничего, что не очень практично.

Это связано с известной ошибкой Windows XP, больше здесь .

Мне посчастливилось разрабатывать на машине с XP, иначе я бы не узнал об этом, пока меня не поразили бы отрицательные отзывы моих пользователей ... что заставляет меня задуматься, почему эта ошибка не упоминается где угодно, где объясняется эта «замечательная» функция прозрачного окна (например, книги, MSDN и т. д.)

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

До этого мои окна должны будут выглядеть так:

альтернативный текст http://img29.imageshack.us/img29/1570/withborder.png

Не очень приятно, как вы можете видеть, так что вы можете представить, как я ценю любые решения.

UPDATE:

Тем временем я подтвердил, что это проблема только при использовании нескольких мониторов (в моем случае Extended Desktop).

После установки исправления проблема полностью исчезла (даже с расширенным рабочим столом).

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

Они серьезные?

Разве они не должны упростить пользователям исправление ошибок Microsoft? Как я могу сказать своим пользователям (которые, возможно, не настолько склонны к компьютерам, как мы, разработчики), зайти на какой-то сайт, ввести электронную почту (о, да и капчу - я думаю, Microsoft боится, что компьютеры крадут свои исправления ошибок LOL), а затем пройти вышеописанный процесс?

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

1 Ответ

0 голосов
/ 10 ноября 2009

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

  1. Проверьте лицензионное соглашение Microsoft для загрузки исправления, чтобы убедиться в правильности следующих условий

  2. Добавьте извлеченный .exe в ваше приложение (в виде отдельного файла или внутри исполняемого файла, извлеченного с помощью GetManifestResourceStream, ReadAllBytes и WriteAllBytes)

  3. Когда ваше приложение запускается в первый раз, проверьте, установлена ​​ли у вас XP с расширенным рабочим столом и, если да, установлено ли исправление или вы используете более новый пакет обновления. Если это так, сохраните этот факт в реестре, чтобы можно было пропустить проверку в будущем.

  4. Если вы используете XP с Extended Desktop и не имеете исправления или последнего пакета обновления, измените фон окна на непрозрачный и включите параметр меню для установки исправления.

  5. Если вы впервые запускаете с правами администратора, откройте MessageBox, сообщив, что есть исправление, обеспечивающее прозрачность окна, и спросите, стоит ли его устанавливать. Если пользователь говорит «да», запустите установку исправления. Если они скажут «нет», скажите им, что опция меню доступна, если они передумают в будущем.

Или, в качестве альтернативы, если они работают на XP, вы всегда можете запустить непрозрачный и всплывающее сообщение о том, что ваше приложение «работает даже лучше в Vista или Windows 7».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...