Я написал программу, которая рисует виджет на обоях рабочего стола, под иконками рабочего стола, и все было хорошо.
Но я обнаружил странную ошибку - моя программа не работала на некоторых других компьютерах - они отображают
тот же рабочий стол без виджета после запуска.
Итак, у кого-нибудь есть опыт, какие-то знания в этой области? Пожалуйста, помогите мне! :)
(Я не могу найти компьютеры рядом, где виджет не работает, на моем компьютере все работает хорошо.
Я написал много тестовых программ, чьи попытки рисовать что-либо на рабочем столе довольно методами,
но на компьютерах моих друзей тест тоже ничего не показывает.)
Метод рисования:
Я написал dll, который находит окно рабочего стола (progman-> child-> child))
и создает ловушку и устанавливает собственную оконную процедуру для рабочего стола.
В оконной процедуре я подключаю WM_ERASEBKGND:
case WM_ERASEBKGND:
HDC hdc = (HDC)wparam;
PaintDesktop(hdc);
WidgetPaint(hdc);
return 1;
// Я пропускаю этот код, получая и устанавливая области отсечения для быстрого рисования.
(Я перепробовал все комбинации с отсечкой и без отсечения)
И в тестах я тоже пытался нарисовать виджет в сообщении WM_PAINT с такими же результатами - у меня все уже работает, но не у всех моих друзей.
обн: я решил это! :)