¿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.
No, no se puede hacer, al menos no si está hablando de la versión del Feature Pack. La versión 10 de las bibliotecas de BCGSoft sí tiene esta funcionalidad; consulte, por ejemplo: http://www.bcgsoft.com/bcgcontrolbarproversions.htm y http://www.bcgsoft.com/images/SkinnedBuiltInDlgs.jpg . El paquete de características de MFC es más o menos la versión anterior de las bibliotecas de BCGSoft, MS compró una licencia de ellos.
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;