本文主要是介绍BCG使用2:对话框主题的修改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
做了一个界面,如下
想修改陈下面这种主题,对比了窗口属性一直都是一样的,不知道哪里出错
想起来了,有一个地方是需要在app之前设置一下
修改之后的效果如下
比较有效版本差异发现代码缺省几行设置主题的位置
最后贴一下代码
需要修改BOOL CMFCSerialPortApp::InitInstance()
// MFCSerialPort.cpp : 定义应用程序的类行为。
//#include "stdafx.h"
#include "MFCSerialPort.h"
#include "MFCSerialPortDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// CMFCSerialPortAppBEGIN_MESSAGE_MAP(CMFCSerialPortApp, CWinApp)ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()// CMFCSerialPortApp 构造CMFCSerialPortApp::CMFCSerialPortApp()
{// 支持重新启动管理器m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;// TODO: 在此处添加构造代码,// 将所有重要的初始化放置在 InitInstance 中
}// 唯一的一个 CMFCSerialPortApp 对象CMFCSerialPortApp theApp;// CMFCSerialPortApp 初始化BOOL CMFCSerialPortApp::InitInstance()
{// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。INITCOMMONCONTROLSEX InitCtrls;InitCtrls.dwSize = sizeof(InitCtrls);// 将它设置为包括所有要在应用程序中使用的// 公共控件类。InitCtrls.dwICC = ICC_WIN95_CLASSES;InitCommonControlsEx(&InitCtrls);CWinApp::InitInstance();AfxEnableControlContainer();// 创建 shell 管理器,以防对话框包含// 任何 shell 树视图控件或 shell 列表视图控件。CShellManager *pShellManager = new CShellManager;// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS(CBCGPWinXPVisualManager));CBCGPButton::EnableWinXPTheme();globalData.m_bUseVisualManagerInBuiltInDialogs = TRUE;if (globalData.m_nBitsPerPixel < 16){AfxMessageBox(_T("The current display settings will not allow this application to display itself properly.\r\nPlease change the display color setting to 'Highest (32 bit)' and run this application again"));}// 标准初始化// 如果未使用这些功能并希望减小// 最终可执行文件的大小,则应移除下列// 不需要的特定初始化例程// 更改用于存储设置的注册表项// TODO: 应适当修改该字符串,// 例如修改为公司或组织名SetRegistryKey(_T("应用程序向导生成的本地应用程序"));//BCGP_VISUAL_THEME_OFFICE_2016_BLACKSetVisualTheme(BCGP_VISUAL_THEME_OFFICE_2016_COLORFUL); //设置使用主题CMFCSerialPortDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: 在此放置处理何时用// “确定”来关闭对话框的代码}else if (nResponse == IDCANCEL){// TODO: 在此放置处理何时用// “取消”来关闭对话框的代码}else if (nResponse == -1){TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");}// 删除上面创建的 shell 管理器。if (pShellManager != NULL){delete pShellManager;}#ifndef _AFXDLLControlBarCleanUp();
#endifBCGCBProCleanUp();// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,// 而不是启动应用程序的消息泵。return FALSE;
}
这篇关于BCG使用2:对话框主题的修改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!