QuakeGod
2024-12-24 61deef5cdf96cbfdd6ad45be49e80d597c00ca65
提交 | 用户 | age
61deef 1 
Q 2 // MainFrm.cpp: CMainFrame 类的实现
3 //
4
5 #include "pch.h"
6 #include "framework.h"
7 #include "MFCMView.h"
8
9 #include "MainFrm.h"
10
11 #ifdef _DEBUG
12 #define new DEBUG_NEW
13 #endif
14
15 // CMainFrame
16
17 IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWndEx)
18
19 BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
20     ON_WM_CREATE()
21 END_MESSAGE_MAP()
22
23 static UINT indicators[] =
24 {
25     ID_SEPARATOR,           // 状态行指示器
26     ID_INDICATOR_CAPS,
27     ID_INDICATOR_NUM,
28     ID_INDICATOR_SCRL,
29 };
30
31 // CMainFrame 构造/析构
32
33 CMainFrame::CMainFrame() noexcept
34 {
35     // TODO: 在此添加成员初始化代码
36 }
37
38 CMainFrame::~CMainFrame()
39 {
40 }
41
42 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
43 {
44     if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
45         return -1;
46
47     CMDITabInfo mdiTabParams;
48     mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
49     mdiTabParams.m_bActiveTabCloseButton = TRUE;      // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
50     mdiTabParams.m_bTabIcons = FALSE;    // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
51     mdiTabParams.m_bAutoColor = TRUE;    // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
52     mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
53     EnableMDITabbedGroups(TRUE, mdiTabParams);
54
55     if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
56         !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
57     {
58         TRACE0("未能创建工具栏\n");
59         return -1;      // 未能创建
60     }
61
62     if (!m_wndStatusBar.Create(this))
63     {
64         TRACE0("未能创建状态栏\n");
65         return -1;      // 未能创建
66     }
67     m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
68
69     // TODO: 如果不需要可停靠工具栏,则删除这三行
70     m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
71     EnableDocking(CBRS_ALIGN_ANY);
72     DockControlBar(&m_wndToolBar);
73
74
75     // 将文档名和应用程序名称在窗口标题栏上的顺序进行交换。这
76     // 将改进任务栏的可用性,因为显示的文档名带有缩略图。
77     ModifyStyle(0, FWS_PREFIXTITLE);
78
79     return 0;
80 }
81
82 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
83 {
84     if( !CMDIFrameWndEx::PreCreateWindow(cs) )
85         return FALSE;
86     // TODO: 在此处通过修改
87     //  CREATESTRUCT cs 来修改窗口类或样式
88
89     return TRUE;
90 }
91
92 // CMainFrame 诊断
93
94 #ifdef _DEBUG
95 void CMainFrame::AssertValid() const
96 {
97     CMDIFrameWndEx::AssertValid();
98 }
99
100 void CMainFrame::Dump(CDumpContext& dc) const
101 {
102     CMDIFrameWndEx::Dump(dc);
103 }
104 #endif //_DEBUG
105
106
107 // CMainFrame 消息处理程序
108