рисование под значками на рабочем столе

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

Так, у кого-либо есть опыт, некоторое знание в этой области?Пожалуйста, помогите мне!:)

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

Метод рисования:

Я записал dll, кто находит настольное окно (progman-> ребенок-> ребенок)) и создает рычаг и установку собственная оконная процедура для рабочего стола. В оконной процедуре я сцепляю WM_ERASEBKGND:

case WM_ERASEBKGND:
  HDC hdc = (HDC)wparam;
  PaintDesktop(hdc);
  WidgetPaint(hdc);
  return 1;

//Я пропускаю в этом получении кода и установке областей отсечения для быстрого рисунка. (Я попробовал все комбинации с отсечением и не отсекая),

И в тестах я также пытающийся нарисовать виджет в сообщении WM_PAINT с теми же результатами - все уже работают во мне, но не работают нисколько мои друзья.

upd: Я решил его!:)

7
задан vsvasya 7 December 2009 в 14:22
поделиться

1 ответ

Я решил! Все просто было на 64-битных машинах) Так что я компилирую свой код для 64-битной версии, и виджет начинает работать очень хорошо!

А также -

PaintDesktop(hdc);

создаст очень яркие обои в Windows7 (и Vista) с Aero. (Обои пользователя становятся ярче). Должно быть

CallWindowProc(OldWndProc, WM_ERASEBKGND, wparam, lparam);

Причина этого - Aero обрабатывает PaintDesktop () как обычную рисование (поверх обоев виртуального экрана, то же самое, что и на рабочем столе) с суммированием цветов.

С уважением! :)

4
ответ дан 7 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: