Domanda

Sto creando un SIP personalizzato per Windows Mobile e mentre l'utente preme o "passa" sopra un pulsante sulla tastiera disegno la corrispondente immagine selezionata (iPhone-esque) alla DC dello schermo usando :: GetDC (NULL). È sviluppato in Win32 C ++.

Il mio problema è che non riesco mai a ridipingere lo schermo, cancellando la chiave precedentemente disegnata. Ho provato tutto ciò a cui potevo pensare per forzarlo, :: RedrawWindow () con tutte le diverse combo di parametri usando NULL o una qualsiasi delle funzioni Get..Window come HWND e tutte le combinazioni di flag (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN etc). Ho anche provato a invalidare il rect e forzare un ridipingere l'app sottostante usando :: GetActiveWindow e :: GetForegroundWindow, variazioni usando :: GetDesktopWindow, ecc. Ho praticamente esaurito le idee ed è l'ultima cosa che mi tiene da usandolo sul mio dispositivo Windows Mobile. Qualcuno ha qualche idea? Qualsiasi aiuto sarebbe molto apprezzato.

Ho incluso alcuni screenshot per illustrare il mio dilemma.

Prima dello screenshot
Dopo lo screenshot

Prima di http://img13.imageshack.us/img13/9861/cezoom1. png Dopo http://img3.imageshack.us/img3/7481/ cezoom2.png

Grazie in anticipo!

È stato utile?

Soluzione

Invece di disegnare sullo sfondo DC, perché non creare una finestra temporanea e disegnare in quella? Quando distruggi la finestra, lo sfondo dovrebbe essere ridipinto automaticamente.

Sto solo indovinando, perché non conosco Windows Mobile, ma potrebbe essere che Windows stia memorizzando nella cache l'ultima cosa che è stata disegnata nel controller di dominio e la ridipinge ogni volta che invalidi la finestra.

Altri suggerimenti

Hai provato InvalidateRect sullo schermo hWnd?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top