La barra delle applicazioni Nascondi automaticamente non appare quando la mia applicazione è ingrandita
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).
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.