Scopri quali colori sono in uso quando si utilizza il Feature Pack MFC in stile Office 2007

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

  •  08-06-2019
  •  | 
  •  

Domanda

Sto aggiornando parte del nostro codice C++ legacy per utilizzare il "pacchetto funzionalità MFC" rilasciato da Microsoft per Visual Studio 2008.Abbiamo utilizzato le nuove classi per derivare la nostra applicazione da CFrameWndEx e stiamo applicando gli stili di Office 2007 per conferire alla nostra applicazione un aspetto più moderno.Questo ci fornisce titoli di finestre con riempimento sfumato, barre di stato, ecc. e l'uso delle barre degli strumenti della barra multifunzione.

Tuttavia, la nostra applicazione contiene alcuni controlli disegnati dal proprietario e vorrei aggiornarli in modo che corrispondano alla combinazione di colori utilizzata dal pacchetto di funzionalità.Idealmente mi piacerebbe conoscere i colori chiari e ombreggiati della barra degli strumenti attualmente in uso.

Ho cercato nella documentazione e sul web e non ho ancora trovato nulla.Qualcuno sa come reperire queste informazioni?

[Modificare]

In particolare dobbiamo scoprire quali colori vengono utilizzati in fase di esecuzione.Puoi modificare l'aspetto della tua applicazione in fase di runtime utilizzando la nuova funzione statica CMFCVisualManager::SetDefaultManager.

La seguente pagina msdn mostra quali tipi di stili sono disponibili, in particolare l'aspetto di Office2007:collegamento a msdn

È stato utile?

Soluzione

Hai guardato nel codice sorgente MFC, che troverai in qualcosa di simile

C:\Programmi\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc

Altri suggerimenti

Sembra che CMFCVisualManager offra diversi metodi per ottenere informazioni sul colore, ad es.

Cmfcvisualmanager :: getSmartDockingBaseGuideColors () CMFCVisualManager :: GetToolBarHighLightColor ()

Dai un'occhiata ai documenti MSDN per CMFCVisualManager.

Buon suggerimento, ma sfortunatamente restituiscono solo varie sfumature di grigio, quando attualmente sto eseguendo la mia applicazione con lo stile CMFCVisualManagerOffice2007::Office2007_LunaBlue

Fastidiosamente la guida di msdn è "in costruzione", quindi non ti dice nemmeno cosa dovrebbero fare!

afxGlobalData contiene alcune informazioni utili sui colori, sui pennelli e sui caratteri correnti utilizzati dal Feature Pack MFC.In particolare utilizzo afxGlobalData.m_clrBarFace quando dipingo gli sfondi della mia barra di controllo.

(nota che non sono davanti al mio PC di lavoro, quindi la sintassi sopra non è esatta.)

Immagino che potresti usare il tuo editor di immagini preferito e scegliere i colori da una schermata.

"Immagino che potresti usare il tuo editor di immagini preferito e scegliere i colori da una schermata."

Questo è essenzialmente ciò che sto facendo in questo momento e ho definito un elenco di costanti da cui tiro fuori i colori.Non sembra molto elegante però!

Sembra che CMFCVisualManager offra diversi metodi per ottenere informazioni sul colore, ad es.

CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()

Dai un'occhiata ai documenti MSDN per CMFCVisualManager.

@GateKiller, l'OP non sta sviluppando un componente aggiuntivo di Office 2007, quindi le linee guida dell'interfaccia utente non saranno di grande aiuto.È un'applicazione MFC che utilizza il file Pacchetto funzionalità di Visual C++ 2008 che consente alle app MFC di assumere l'aspetto di Office 2007.

Buon suggerimento, ma sfortunatamente restituiscono solo varie sfumature di grigio, quando attualmente sto eseguendo la mia applicazione con lo stile CMFCVisualManagerOffice2007::Office2007_LunaBlue

CMFCVisualManagerOffice2007::GetTabFrameColors: il parametro di output clrFace è grigio?

Forse sono tutte maschere su un'unica tonalità di base per ciascun tema?Supponendo che tu possa determinare quale combinazione di colori è in vigore con CMFCVisualManagerOffice2007::GetStyle(), forse puoi capire qual è quella tonalità e quindi eseguire un mascheramento con i metodi GetxxxColor().

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