Запретить обновление всего экрана - PullRequest
4 голосов
/ 25 января 2011

Редактировать 1: На самом деле, я хотел только избежать мерцания, вызванного закрытием документа Word и открытием другого.Но теперь, похоже, такой подход неосуществим.

Привет, возможно ли предотвратить обновление всего экрана (не только рабочего стола)?Вопрос получен из этого .Я хочу, чтобы в моей надстройке Word блокировалось обновление всего экрана, когда я закрываю документ Word и открываю другой, и снова включаю обновление, когда я закончу.

Идея была бы:

  1. Получить изображение всего экрана (как?);
  2. Показать самое верхнее окно, чтобы показать изображение экрана, захваченное на шаге 1,чтобы охватить весь экран;
  3. Выполни мою работу и закрой самое верхнее окно, когда закончите.

Возможно ли это?Или у тебя есть другие идеи получше?Спасибо!

Ответы [ 2 ]

7 голосов
/ 25 января 2011

Не.

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

The Old New Thing ( Raymond Chen ) содержит несколько очень хороших постов, варьирующихся от LockWindowUpdate до блокировки на месте и других враждебные возможности пользователя .

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

Блокировка чего-либо для целейа «чтобы он выглядел красиво» - даже на очень короткий промежуток времени - это полное нет-нет.

Ваш запрос - это только первый шаг к ужасному системно-модальному диалогу.хочешь сделать это плохо с твоим компьютером? "с кнопками Yes и No, где Yes - кнопка по умолчанию, когда пользователь вводит длинную историю, нажимая пробел.

- jeroen

0 голосов
/ 25 января 2011

для предотвращения обновления экрана:

SendMessage(GetDesktopWindow, WM_SETREDRAW, 0, 0);

для повторного включения обновления экрана:

SendMessage(GetDesktopWindow, WM_SETREDRAW, 1, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...