Escribí un programa que pinta el widget en el fondo de escritorio, debajo de los íconos del escritorio, y todo estaba bien. Pero revelo un error extraño - mi programa no funcionaba en otras computadoras - muestran el mismo escritorio sin widget después del inicio.dibujo debajo de los iconos en el escritorio
Entonces, ¿alguien tiene experiencia, algún conocimiento en esta área? ¡Por favor, ayúdame! :)
(no puedo encontrar ningún equipo cercano, donde Reproductor no las obras, en mi computadora todo funciona bien. escribí un montón de programas de prueba, cuyos intentos de dibujar cualquier cosa en el escritorio con métodos bien, pero la prueba muestra nada demasiado en mis amigos computadoras)
método de dibujo:.
escribí una DLL, que encuentra la ventana del escritorio (progman-> niño-> niño)) y crea un gancho e instalar propio procedimiento de ventana escritorio. En procedimiento de ventana engancho WM_ERASEBKGND:
case WM_ERASEBKGND:
HDC hdc = (HDC)wparam;
PaintDesktop(hdc);
WidgetPaint(hdc);
return 1;
// Me salto en este código de obtención y definición de áreas de recorte para el dibujo rápido. (probé todas las combinaciones con el recorte y sin recorte)
Y en las pruebas también tratando de pintar de widget en el mensaje WM_PAINT con los mismos resultados - todos ya trabaja en mí, pero no funciona en todos mis amigos.
upd: ¡Lo solucioné! :)
¿Su código funciona en Windows XP y * no * funciona en Windows Vista o Windows 7? – MusiGenesis
Sí, mi código funciona en XP y Windows Vista. Pero por completo no funciona en Windows 7. En Windows 7, supongo que es un mecanismo de protección. (No puedo incluso listar las DLL que se cargaron en el proceso explorer.exe) – vsvasya
Por curiosidad, ¿cuál fue la solución? – Brian