Pergunta

Estou criando um SIP personalizada do Windows Mobile e como o usuário pressiona ou "paira" sobre um botão no teclado que eu desenhá-lo imagem selecionada (iPhone-esque) para DC da tela do correspondente utilizando :: GetDC (NULL). É desenvolvido em Win32 C ++.

O meu problema é que eu nunca pode obter a tela para redesenhar propriamente dito, apagando a chave previamente traçado. Eu tentei tudo que eu poderia pensar para forçá-lo, :: RedrawWindow () com todas as diferentes combinações de parâmetros usando NULL ou qualquer uma das funções Get..Window como o HWND, e todos combinação de bandeiras (invalidar | UpdateNow | ERASENOW | ALLCHILDREN etc). Eu também tentei invalidar a rect e forçar um repaint do aplicativo subjacente usando :: GetActiveWindow e :: GetForegroundWindow, variações usando :: GetDesktopWindow, etc. Eu essencialmente ficar sem ideias e é a última coisa segurando-me a usá-lo em meu dispositivo Windows mobile. Alguém tem alguma idéia? Qualquer ajuda seria muito apreciada.

Eu incluí algumas screenshots para ilustrar o meu dilema.

Antes tela
Depois tela

Antes http://img13.imageshack.us/img13/9861/cezoom1. PNG Após http://img3.imageshack.us/img3/7481/ cezoom2.png

Agradecemos antecipadamente!

Foi útil?

Solução

Ao invés de desenho ao fundo DC, por que não criar uma janela temporária e atrair para isso? Quando você destruir a janela, o fundo deve ficar repintado automaticamente.

Eu estou apenas adivinhando, porque eu não sei o Windows Mobile, mas pode ser que o Windows é o cache a última coisa que foi arrastado para a DC e repintar-lo cada vez que você invalidar a janela.

Outras dicas

Você já tentou InvalidateRect na tela hWnd?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top