Domanda

In quasi tutte le applicazioni Windows, noto che tenere premuto il pulsante del mouse in un'area non client provoca l'interruzione del disegno. Perché è richiesto?

Ad esempio, ho un'applicazione Managed Direct 3D che visualizza un cubo di filatura. Se posiziono il puntatore sulla barra del titolo e tengo premuto il pulsante del mouse, il cubo smette di girare anche se non ho codificato alcuna condizione del genere nel mio ciclo.

Perché la pittura è interrotta? Quali sono i vantaggi? Ancora più importante, come posso aggirare questo?

È stato utile?

Soluzione

Quando fai clic sulla barra del titolo, una breve pausa mentre il gestore di finestre tenta di determinare se stai facendo clic o iniziando un trascinamento (spostando la finestra). Se stai ancora tenendo premuto il pulsante, allora è un trascinamento: il gestore di finestre imposta il proprio ciclo di messaggi e pompa i messaggi fino a quando non rilasci il mouse. La tua finestra dovrebbe essere ancora in grado di elaborare i messaggi, perché verranno comunque inviati, ma se l'animazione dipende da un ciclo di messaggi personalizzato, rimarrai bloccato fino alla fine del ciclo di trascinamento modale.

aggiralo attivando la tua animazione in risposta ai messaggi: un timer mi sembra una buona scelta.

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