Ho scritto un programma che dipinge widget sullo sfondo del desktop, sotto le icone del desktop, e tutto andava bene. Ma svelo uno strano bug: il mio programma non funzionava su altri computer: visualizza lo lo stesso desktop senza widget dopo l'avvio.disegno sotto icone sul desktop
Quindi, qualcuno ha qualche esperienza, qualche conoscenza in questo settore? Mi aiuti per favore! :)
(non riesco a trovare qualsiasi computer vicino, dove widget di non opere, nel mio computer tutto funziona bene. ho scritto un sacco di programmi di test, i cui tentativi disegnare qualsiasi cosa sul desktop con metodi piuttosto, ma prova visualizza niente di troppo nel mio computer amici)
metodo di disegno:.
ho scritto una dll, che trova finestra del desktop (progman-> Child> bambino)) e crea un gancio e installare proprio window procedure per desktop. Nella routine di finestra I Gancio WM_ERASEBKGND:
case WM_ERASEBKGND:
HDC hdc = (HDC)wparam;
PaintDesktop(hdc);
WidgetPaint(hdc);
return 1;
// mi salta in questo codice ottenere e impostare aree di ritaglio per il disegno veloce. (Ho provato tutte le combinazioni con ritaglio e senza ritaglio)
E nei test ho anche provato a dipingere il widget nel messaggio WM_PAINT con gli stessi risultati - tutto funziona già con me, ma non funziona affatto con i miei amici.
upd: Ho risolto! :)
Il tuo codice funziona in Windows XP e * non * funziona in Windows Vista o Windows 7? – MusiGenesis
Sì, il mio codice funziona in XP e Windows Vista. Ma non funziona in Windows 7. In Windows 7, suppongo, è un meccanismo di protezione. (Non riesco nemmeno a elencare DLL caricate nel processo explorer.exe) – vsvasya
Per curiosità, quale era la soluzione? – Brian