mfc mfc-feature-pack

¿Puedes usar CMFCVisualManager con una aplicación basada en diálogo?



mfc-feature-pack (4)

¿Se puede usar CMFCVisualManager con una aplicación basada en diálogo para cambiar la apariencia de las aplicaciones? ¿Si es así, Cómo se hace?

La idea es cambiar la forma, el color, etc. de los controles, como los botones pulsadores, utilizando el paquete de características MFC publicado con MSVC 2008.



Debe agregar el manifiesto de Controles comunes a los recursos de su proyecto. Aquí está el código para el archivo de manifiesto:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Program Name" type="win32" /> <description>Description of Program</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>


Creo que puede tener algunas características de paquete de características de MFC mediante la implementación de OnApplicationLook en su CDialog base (consulte el Paso 4 en esta página ). Puede ser mejor implementar todo el método OnApplicationLook , pero puede probar su aplicación simplemente agregando esto a OnInitDialog :

CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); CDockingManager::SetDockingMode(DT_SMART); RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);


Esta es la menor cantidad de código para habilitar los Estilos visuales. Debería poder mostrar su CDialog fácilmente en el marco. IDR_MAINFRAME es un recurso de menú.

class CMFCApplication2Dlg : public CFrameWndEx { CMFCMenuBar bar; public: CMFCApplication2Dlg() : CFrameWndEx() { LoadFrame(IDR_MAINFRAME); bar.Create(this); } }; class CMFCApplication2App : public CWinAppEx { public: virtual BOOL InitInstance() { CWinAppEx::InitInstance(); CMFCVisualManagerOffice2007::SetStyle( CMFCVisualManagerOffice2007::Office2007_ObsidianBlack); CMFCVisualManager::SetDefaultManager( RUNTIME_CLASS(CMFCVisualManagerOffice2007)); SetRegistryKey(_T("Local AppWizard-Generated Applications")); m_pMainWnd = new CMFCApplication2Dlg(); m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; } }; CMFCApplication2App theApp;