Pregunta

Estoy creando un SIP personalizado de Windows Mobile y cuando el usuario presiona o "pasa el cursor". sobre un botón en el teclado, dibujo su imagen seleccionada correspondiente (iPhone-esque) al DC de la pantalla usando :: GetDC (NULL). Está desarrollado en Win32 C ++.

Mi problema es que nunca puedo hacer que la pantalla se repinte sola, borrando la clave dibujada anteriormente. He intentado todo lo que se me ocurre para forzarlo, :: RedrawWindow () con todos los diferentes combos de parámetros usando NULL o cualquiera de las funciones Get..Window como HWND, y todo el combo de banderas (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN, etc.). También he intentado invalidar el rect y forzar un repintado de la aplicación subyacente usando :: GetActiveWindow y :: GetForegroundWindow, variaciones usando :: GetDesktopWindow, etc. Esencialmente me he quedado sin ideas y es lo último que me detiene. utilizándolo en mi dispositivo Windows Mobile. ¿Alguien tiene alguna idea? Cualquier ayuda sería muy apreciada.

He incluido algunas capturas de pantalla para ilustrar mi dilema.

Antes de la captura de pantalla
Después de la captura de pantalla

Antes de http://img13.imageshack.us/img13/9861/cezoom1. png Después de http://img3.imageshack.us/img3/7481/ cezoom2.png

Gracias de antemano!

¿Fue útil?

Solución

En lugar de dibujar en el fondo DC, ¿por qué no crea una ventana temporal y dibuja en eso? Cuando destruye la ventana, el fondo se debe volver a pintar automáticamente.

Solo estoy adivinando, porque no conozco Windows Mobile, pero podría ser que Windows está almacenando en caché lo último que se dibujó en el DC y repitiéndolo cada vez que invalida la ventana.

Otros consejos

¿Has probado InvalidateRect en la pantalla hWnd?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top