Я написал программу, которая рисует виджет на обоях рабочего стола, под значками рабочего стола, и все было хорошо. Но я обнаруживаю странную ошибку - моя программа не работала на некоторых других компьютерах - они отображают тот же рабочий стол без виджета после запуска.рисунок под значками на рабочем столе
Итак, у кого-нибудь есть опыт, некоторые знания в этой области? Пожалуйста, помогите мне! :)
(я не могу найти ни одного компьютера рядом, где виджет не работает, в моем компьютере все работает хорошо. я написал много тестовых программ, чьи попытки сделать что-либо на рабочем столе с, а методы, но тест ничего не отображает тоже в моих друзьях компьютерах)
метод рисования:.
Я написал DLL, который находит на рабочий стол окна (progman-> ляющих> ребенок)) и создает крюк и установить собственную оконную процедуру для рабочий стол. В оконной процедуре я крючок WM_ERASEBKGND:
case WM_ERASEBKGND:
HDC hdc = (HDC)wparam;
PaintDesktop(hdc);
WidgetPaint(hdc);
return 1;
// я пропущу в этом коде получения и установки обрезки областей для быстрого рисования. (я пробовал все комбинации с отсечением и без обрезки)
И в тестах я также пытаюсь нарисовать виджет в сообщении WM_PAINT с одинаковыми результатами - все уже работает на меня, но работает совсем не моими друзьями.
upd: Я решил это! :)
Работает ли ваш код в Windows XP и * не работает в Windows Vista или Windows 7? – MusiGenesis
Да, мой код работает в XP и Windows Vista. Но copmletely не работает в Windows 7. В Windows 7, я полагаю, его механизм защиты. (Я даже не могу перечислить DLL-файлы, загруженные в процесс explorer.exe) – vsvasya
Из любопытства, что было исправлением? – Brian