如何将Visual Studio 2022 Community的MFC MDI项目设置为Win95 classic风格?
设置MFC MDI应用为Win95经典样式(编程实现方案)
确实可以通过编程方式实现,VS 2022的可视化设置面板没有提供直接选项,以下是具体实现步骤:
1. 全局禁用视觉主题
Win95经典样式本质是不启用Windows视觉主题,核心通过SetThemeAppProperties函数实现:
- 在应用类(
CxxxApp.cpp,xxx为你的应用名称)的InitInstance函数开头添加以下代码:
#include <uxtheme.h> #pragma comment(lib, "uxtheme.lib") BOOL CYourApp::InitInstance() { // 关闭整个应用的主题支持,切换到经典样式 SetThemeAppProperties(0); // 保留原有的初始化代码(如创建主框架、加载资源等) ... }
SetThemeAppProperties(0)会全局禁用应用的主题渲染,让窗口、控件回到Win95风格的外观。
2. 调整窗口样式(可选)
如果需要更贴合Win95的窗口边框细节,可在主框架或MDI子窗口的PreCreateWindow函数中调整窗口样式:
主框架窗口(CMainFrame)
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // 调整为Win95风格的窗口边框(保留可调整大小的细边框) cs.style = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; cs.dwExStyle &= ~WS_EX_CLIENTEDGE; if(!CFrameWnd::PreCreateWindow(cs)) return FALSE; return TRUE; }
MDI子窗口(CChildFrame)
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) { cs.style = WS_CHILD | WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; cs.dwExStyle &= ~WS_EX_CLIENTEDGE; if(!CMDIChildWnd::PreCreateWindow(cs)) return FALSE; return TRUE; }
3. 控件样式调整(可选)
若对话框或控件仍显示现代风格,可对单个控件或整个窗口禁用主题:
// 对整个对话框禁用主题 SetWindowTheme(m_hWnd, L"", L""); // 对单个控件禁用主题 SetWindowTheme(GetDlgItem(IDC_YOUR_CONTROL)->m_hWnd, L"", L"");
内容的提问来源于stack exchange,提问作者RK_diamond
相关产品推荐
相关产品推荐

