1 #include "stdafx.h"
2 #include "CMainDialogBase.h"
3 #include "Common.h"
4 #include "MusicPlayer2.h"
5
IMPLEMENT_DYNAMIC(CMainDialogBase,CDialog)6 IMPLEMENT_DYNAMIC(CMainDialogBase, CDialog)
7
8 CMainDialogBase::CMainDialogBase(UINT nIDTemplate, CWnd * pParent)
9 : CDialog(nIDTemplate, pParent)
10 {
11 }
12
13
~CMainDialogBase()14 CMainDialogBase::~CMainDialogBase()
15 {
16 }
17
SetFullScreen(bool full_screen)18 void CMainDialogBase::SetFullScreen(bool full_screen)
19 {
20 m_bFullScreen = full_screen;
21 if (full_screen)
22 {
23 // 获取主窗口所在监视器句柄,如果窗口不在任何监视器则返回主监视器句柄
24 HMONITOR hMonitor = MonitorFromWindow(theApp.m_pMainWnd->GetSafeHwnd(), MONITOR_DEFAULTTOPRIMARY);
25
26 // 获取监视器信息
27 MONITORINFO lpmi;
28 lpmi.cbSize = sizeof(lpmi);
29 GetMonitorInfo(hMonitor, &lpmi);
30
31 // 用m_struOldWndpl得到当前窗口的显示状态和窗体位置,以供退出全屏后使用
32 GetWindowPlacement(&m_struOldWndpl);
33
34 CRect monitor{ lpmi.rcMonitor };
35 POINT offset{ lpmi.rcWork.left - lpmi.rcMonitor.left, lpmi.rcWork.top - lpmi.rcMonitor.top };
36 // 设置窗口对象参数,为全屏做好准备并进入全屏状态
37 WINDOWPLACEMENT struWndpl;
38 struWndpl.length = sizeof(WINDOWPLACEMENT);
39 struWndpl.flags = 0;
40 struWndpl.showCmd = SW_SHOWNORMAL;
41 struWndpl.rcNormalPosition = monitor - offset;
42 SetWindowPlacement(&struWndpl);//该函数设置指定窗口的显示状态和显示大小位置等,是我们该程序最为重要的函数
43 }
44 else
45 {
46 SetWindowPlacement(&m_struOldWndpl);
47 }
48 }
49
ShowTitlebar(bool show)50 void CMainDialogBase::ShowTitlebar(bool show)
51 {
52 if (show)
53 {
54 ModifyStyle(0, WS_CAPTION, SWP_FRAMECHANGED); //还原标题栏
55 }
56 else
57 {
58 ModifyStyle(WS_CAPTION, 0, SWP_FRAMECHANGED); //去掉标题栏
59 }
60 }
61
ShowSizebox(bool show)62 void CMainDialogBase::ShowSizebox(bool show)
63 {
64 if (show)
65 {
66 ModifyStyle(0, WS_SIZEBOX, SWP_FRAMECHANGED); // 还原大小边框
67 }
68 else
69 {
70 ModifyStyle(WS_SIZEBOX, 0, SWP_FRAMECHANGED); // 去掉大小边框
71 }
72 }
73
BEGIN_MESSAGE_MAP(CMainDialogBase,CDialog)74 BEGIN_MESSAGE_MAP(CMainDialogBase, CDialog)
75 ON_WM_GETMINMAXINFO()
76 END_MESSAGE_MAP()
77
78
79 void CMainDialogBase::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
80 {
81 // TODO: 在此添加消息处理程序代码和/或调用默认值
82
83 CDialog::OnGetMinMaxInfo(lpMMI);
84 }
85