Cambio colore della title bar

di il
1 risposte

Cambio colore della title bar

Sto utilizzando visual studio e librerie mfc, vorrei cambiare il colore della mia title bar della mia applicazione, ho usato questo codice:


void CDlgMine::OnNcPaint() 
{
	int aElements[2] = { COLOR_WINDOW, COLOR_WINDOWTEXT };
	DWORD aOldColors[2];
	DWORD aNewColors[2];


	aNewColors[0] = RGB(255, 255, 255);   
	aNewColors[1] = RGB(0, 0, 255);  // blue

	
	int  flag = COLOR_HOTLIGHT;
	SetSysColors(2, aElements, aNewColors);
} 


la cosa è strana è che a volte lanciando la mia applicazione la title bar è blu come vorrei, a volte è totalmente bianca senza nemmeno il titolo..avete qualche idea? ho windows 10

1 Risposte

  • Re: Cambio colore della title bar

    Ciao, la funzione SetSysColor() è una API Win32 che si occupa di cambiare i colori di sistema per tutte le finestre, vedi https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setsyscolors quindi di sicuro non è quello che devi usare in quanto non cambi solo i colori della tua finestra ma anche quelli delle altre.
    Aggiungo che SetSysColor() non deve essere necessariamente richiamata all'interno di un messaggio di "paint" come WM_NCPAINT (quindi nella OnNcPaint()): se guardi l'esempio del link qui sopra vedrai che richiamano SetSysColor() addirittura in un programma console.
    Il problema, comunque, è che SetSysColor() non è la soluzione, cambiare colore alla barra del titolo non è affare da poco; io ti posso suggerire di creare una finestra senza barra del titolo e di creare la tua propria barra "custom" tramite una label, in modo da avere piena libertà e di avere la garanzia che la tua applicazione verrà visualizzata in modo corretto con le varie versioni di Windows.
Devi accedere o registrarti per scrivere nel forum
1 risposte