La barra delle applicazioni Nascondi automaticamente non appare quando la mia applicazione è ingrandita

StackOverflow https://stackoverflow.com/questions/137005

  •  02-07-2019
  •  | 
  •  

Domanda

La mia applicazione disegna tutti i bordi e le decorazioni delle finestre. Funziona bene con le barre delle applicazioni di Windows impostate per nascondersi automaticamente, tranne quando la finestra della mia applicazione è ingrandita. La barra delle applicazioni non verrà "roll up". Si comporterà normalmente se l'applicazione non è ingrandita, anche se dimensionata fino in fondo allo schermo. Funziona anche normalmente se ridimensiono semplicemente la finestra per occupare l'intero display (come se fosse ingrandito).

È stato utile?

Soluzione

Ho trovato il problema. La mia applicazione stava gestendo il messaggio WM_GETMINMAXINFO e sovrascriveva i valori nel record del parametro MINMAXINFO. I valori presenti nel record sono stati gonfiati di 7 (larghezza del bordo) della risoluzione dei pixel dello schermo. Ciò ha senso in quanto, quando ingrandito, spinge i bordi della finestra oltre la parte visibile dello schermo. Inoltre imposta ptMaxPosition (punto su cui l'origine della finestra è impostata su ingrandita) su -7, -7. La mia applicazione lo stava impostando su 0,0, e l'altezza e la larghezza massime esattamente alla dimensione della risoluzione dello schermo (non gonfiata). Non so perché sia ??stato fatto; è stato scritto da un predecessore. Se commento quel codice e non modifico la struttura MINMAXINFO, la funzione Nascondi automaticamente funziona.

Quanto al perché, non ne sono del tutto sicuro. È possibile che il rilevamento per spuntare un "nascosto automaticamente" la barra delle applicazioni è collegata al meccanismo per la gestione dei messaggi WM_MOUSEMOVE e non per WM_NCMOUSEMOVE. Con la mia applicazione che ha portato la massimizzazione a parcheggiare il mio bordo proprio nella parte inferiore dello schermo, avrei generato eventi WM_NCMOUSEMOVE; con il MINMAXINFO lasciato solo, avrei generato WM_MOUSEMOVE.

Altri suggerimenti

Questo dipende dal fatto che 'Mantieni la barra delle applicazioni in cima ad altre finestre' sia selezionato nelle proprietà della barra delle applicazioni. Se è selezionato, verrà visualizzata la barra delle applicazioni.

Ma non essere tentato di modificare a livello di programmazione questa impostazione su una macchina degli utenti finali solo per soddisfare le tue esigenze, è considerata una pratica scortese e scorretta. L'app dovrebbe adattarsi all'ambiente in cui viene distribuita.

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