📄 donutoptions.h
字号:
#pragma once
#define MAIN_EX_NEWWINDOW 0x00000001L
#define MAIN_EX_NOACTIVATE 0x00000002L
// #define MAIN_EX_NOINITWND 0x00000004L obsolete
#define MAIN_EX_ONEINSTANCE 0x00000008L
#define MAIN_EX_WINDOWLIMIT 0x00000010L
#define MAIN_EX_NOCLOSEDFG 0x00000020L
#define MAIN_EX_NOMDI 0x00000040L
// #define MAIN_EX_VIEWCLIPBOARD 0x00000080L
#define MAIN_EX_FULLSCREEN 0x00000100L
#define MAIN_EX_BACKUP 0x00000200L
#define MAIN_EX_NOACTIVATE_NEWWIN 0x00000400L
#define MAIN_EX_ADDFAVORITEOLDSHELL 0x00000800L
#define MAIN_EX_ORGFAVORITEOLDSHELL 0x00001000L
#define MAIN_EX_GLOBALOFFLINE 0x00002000L
#define MAIN_EX_LOADGLOBALOFFLINE 0x00004000L
#define MAIN_EX_KILLDIALOG 0x00008000L
#define MAIN_EX_REGISTER_AS_BROWSER 0x00010000L
#define MAIN_EX_INHERIT_OPTIONS 0x00020000L
#include "RecentDocumentListFixed.h"
class CMainOption
{
public:
static DWORD s_dwMainExtendedStyle;
static DWORD s_dwMaxWindowCount;
static DWORD s_dwBackUpTime;
static bool s_bTabMode;
static bool s_bAppClosing;
static bool s_bIgnoreUpdateClipboard;// for insane WM_DRAWCLIBOARD
static CRecentDocumentListFixed* s_pMru;
static void GetProfile()
{
CIniSection pr;
pr.Open(_szIniFileName, _T("Main"));
pr.QueryValue(s_dwMainExtendedStyle, _T("Extended_Style"));
pr.QueryValue(s_dwMaxWindowCount, _T("Max_Window_Count"));
pr.QueryValue(s_dwBackUpTime, _T("BackUp_Time"));
pr.Close();
s_pMru = new CRecentDocumentListFixed;
s_pMru->SetMaxEntries(9);
s_pMru->ReadFromIniFile();
if (s_dwMainExtendedStyle & MAIN_EX_NOMDI)
s_bTabMode = true;
else
s_bTabMode = false;
// NOTE. If all the Web Browser server on your desktop is unloaded, some OS automatically goes online.
// And if all the Web Browser server on you application is unloaded, some OS automatically goes online.
if (_check_flag(MAIN_EX_LOADGLOBALOFFLINE, s_dwMainExtendedStyle))
MtlSetGlobalOffline(_check_flag(MAIN_EX_GLOBALOFFLINE, s_dwMainExtendedStyle));
}
static void WriteProfile()
{
CIniSection pr;
if (MtlIsGlobalOffline())
s_dwMainExtendedStyle |= MAIN_EX_GLOBALOFFLINE;
else
s_dwMainExtendedStyle &= ~MAIN_EX_GLOBALOFFLINE;
pr.Open(_szIniFileName, _T("Main"));
pr.SetValue(s_dwMainExtendedStyle, _T("Extended_Style"));
pr.SetValue(s_dwMaxWindowCount, _T("Max_Window_Count"));
pr.SetValue(s_dwBackUpTime, _T("BackUp_Time"));
pr.Close();
s_pMru->WriteToIniFile();
delete s_pMru;
}
static void SetMRUMenuHandle(HMENU hMenu, int nPos)
{
HMENU hFileMenu = ::GetSubMenu(hMenu, 0);
#ifdef _DEBUG
// absolute position, can change if menu changes
TCHAR szMenuString[100];
::GetMenuString(hFileMenu, nPos, szMenuString, sizeof(szMenuString), MF_BYPOSITION);
ATLASSERT(lstrcmp(szMenuString, _T("Open &File")) == 0);
#endif //_DEBUG
HMENU hMruMenu = ::GetSubMenu(hFileMenu, nPos);
CMainOption::s_pMru->SetMenuHandle(hMruMenu);
CMainOption::s_pMru->UpdateMenu();
}
// Data members
// Constructor
CMainOption() { }
static bool IsQualify(int nWindowCount)
{
if (!(s_dwMainExtendedStyle & MAIN_EX_WINDOWLIMIT))
return true;
if (nWindowCount < s_dwMaxWindowCount)
return true;
else
return false;
}
// Message map and handlers
BEGIN_MSG_MAP(CMainFrame)
COMMAND_ID_HANDLER_EX(ID_MAIN_EX_NEWWINDOW, OnMainExNewWindow)
COMMAND_ID_HANDLER_EX(ID_MAIN_EX_NOACTIVATE, OnMainExNoActivate)
COMMAND_ID_HANDLER_EX(ID_MAIN_EX_NOACTIVATE_NEWWIN, OnMainExNoActivateNewWin)
END_MSG_MAP()
void OnMainExNewWindow(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (s_dwMainExtendedStyle & MAIN_EX_NEWWINDOW)
s_dwMainExtendedStyle &= ~MAIN_EX_NEWWINDOW;
else
s_dwMainExtendedStyle |= MAIN_EX_NEWWINDOW;
}
void OnMainExNoActivate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (s_dwMainExtendedStyle & MAIN_EX_NOACTIVATE)
s_dwMainExtendedStyle &= ~MAIN_EX_NOACTIVATE;
else
s_dwMainExtendedStyle |= MAIN_EX_NOACTIVATE;
}
void OnMainExNoActivateNewWin(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
{
if (s_dwMainExtendedStyle & MAIN_EX_NOACTIVATE_NEWWIN)
s_dwMainExtendedStyle &= ~MAIN_EX_NOACTIVATE_NEWWIN;
else
s_dwMainExtendedStyle |= MAIN_EX_NOACTIVATE_NEWWIN;
}
// Update command UI and handlers
BEGIN_UPDATE_COMMAND_UI_MAP(CMainOption)
UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_MAIN_EX_NEWWINDOW, MAIN_EX_NEWWINDOW, s_dwMainExtendedStyle)
UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_MAIN_EX_NOACTIVATE, MAIN_EX_NOACTIVATE, s_dwMainExtendedStyle)
UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_MAIN_EX_NOACTIVATE_NEWWIN, MAIN_EX_NOACTIVATE_NEWWIN, s_dwMainExtendedStyle)
UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_REGISTER_AS_BROWSER, MAIN_EX_REGISTER_AS_BROWSER, s_dwMainExtendedStyle)
END_UPDATE_COMMAND_UI_MAP()
};
__declspec(selectany) DWORD CMainOption::s_dwMainExtendedStyle = MAIN_EX_NEWWINDOW|MAIN_EX_NOACTIVATE|MAIN_EX_NOACTIVATE_NEWWIN;
__declspec(selectany) DWORD CMainOption::s_dwMaxWindowCount = 0;
__declspec(selectany) DWORD CMainOption::s_dwBackUpTime = 1;
__declspec(selectany) bool CMainOption::s_bTabMode = false;
__declspec(selectany) bool CMainOption::s_bAppClosing = false;
__declspec(selectany) bool CMainOption::s_bIgnoreUpdateClipboard = false;
__declspec(selectany) CRecentDocumentListFixed* CMainOption::s_pMru = NULL;
/////////////////////////////////////////////////////////////////////////////
// CMainPropertyPage
class CMainPropertyPage : public CPropertyPageImpl<CMainPropertyPage>,
public CWinDataExchange<CMainPropertyPage>
{
public:
// Constants
enum { IDD = IDD_PROPPAGE_MAIN };
// Data members
int m_nNewWindow, m_nNoActivate, m_nNoActivateNewWin,
m_nOneInstance, m_nLimit, m_nNoCloseDFG, m_nNoMDI, m_nBackUp,
m_nAddFavoriteOldShell, m_nOrgFavoriteOldShell, m_nRegisterAsBrowser;
int m_nMaxWindowCount, m_nBackUpTime;
int m_nLoadGlobalOffline, m_nKillDialog;
int m_nInheritOptions;
CWindow m_wnd;
// DDX map
BEGIN_DDX_MAP(CMainPropertyPage)
DDX_CHECK(IDC_CHECK_MAIN_NEWWINDOW, m_nNewWindow)
DDX_CHECK(IDC_CHECK_MAIN_NOACTIVATE, m_nNoActivate)
DDX_CHECK(IDC_CHECK_MAIN_NOACTIVATE_NEWWIN, m_nNoActivateNewWin)
DDX_CHECK(IDC_CHECK_MAIN_NOMDI, m_nNoMDI)
DDX_CHECK(IDC_CHECK_MAIN_INHERIT_OPTIONS, m_nInheritOptions)
DDX_CHECK(IDC_CHECK_ONEINSTANCE, m_nOneInstance)
DDX_CHECK(IDC_CHECK_MAIN_LIMIT, m_nLimit)
DDX_CHECK(IDC_CHECK_MAIN_BACKUP, m_nBackUp)
DDX_CHECK(IDC_CHECK_MAIN_NOCLOSEDFG, m_nNoCloseDFG)
DDX_CHECK(IDC_CHECK_MAIN_ADDFAVORITEOLDSHELL, m_nAddFavoriteOldShell)
DDX_CHECK(IDC_CHECK_MAIN_ORGFAVORITEOLDSHELL, m_nOrgFavoriteOldShell)
DDX_CHECK(IDC_CHECK_MAIN_LOADGLOBALOFFLINE, m_nLoadGlobalOffline)
DDX_CHECK(IDC_CHECK_MAIN_KILLDIALOG, m_nKillDialog)
DDX_CHECK(IDC_CHECK_MAIN_REGISTER_AS_BROWSER, m_nRegisterAsBrowser)
DDX_INT_RANGE(IDC_EDIT_MAIN_LIMITEDCOUNT, m_nMaxWindowCount, 0, 255)
DDX_INT_RANGE(IDC_EDIT_MAIN_BACKUPTIME, m_nBackUpTime, 1, 120)
END_DDX_MAP()
// Constructor
CMainPropertyPage(HWND hWnd) : m_wnd(hWnd)
{
_SetData();
}
// Overrides
BOOL OnSetActive()
{
SetModified(TRUE);
return DoDataExchange(FALSE);
}
BOOL OnKillActive()
{
return DoDataExchange(TRUE);
}
BOOL OnApply()
{
if (DoDataExchange(TRUE)) {
_GetData();
return TRUE;
}
else
return FALSE;
}
// Implementation
protected:
void _GetData()
{
// Update main style
CMainOption::s_dwMainExtendedStyle = 0;
if (m_nNewWindow == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_NEWWINDOW;
if (m_nNoActivate == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_NOACTIVATE;
if (m_nNoActivateNewWin == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_NOACTIVATE_NEWWIN;
if (m_nOneInstance == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_ONEINSTANCE;
if (m_nLimit == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_WINDOWLIMIT;
if (m_nNoCloseDFG == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_NOCLOSEDFG;
if (m_nNoMDI == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_NOMDI;
if (m_nBackUp == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_BACKUP;
if (m_nAddFavoriteOldShell == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_ADDFAVORITEOLDSHELL;
if (m_nOrgFavoriteOldShell == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_ORGFAVORITEOLDSHELL;
if (m_nRegisterAsBrowser == 1) {
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_REGISTER_AS_BROWSER;
MtlSendOnCommand(m_wnd, ID_REGISTER_AS_BROWSER);
}
else {
MtlSendOffCommand(m_wnd, ID_REGISTER_AS_BROWSER);
}
if (m_nLoadGlobalOffline == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_LOADGLOBALOFFLINE;
if (m_nKillDialog == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_KILLDIALOG;
if (m_nInheritOptions == 1)
CMainOption::s_dwMainExtendedStyle |= MAIN_EX_INHERIT_OPTIONS;
// update max window count
CMainOption::s_dwMaxWindowCount = m_nMaxWindowCount;
CMainOption::s_dwBackUpTime = m_nBackUpTime;
m_wnd.PostMessage(WM_COMMAND, ID_BACKUPOPTION_CHANGED);
}
void _SetData()
{
m_nNewWindow = CMainOption::s_dwMainExtendedStyle & MAIN_EX_NEWWINDOW ? 1 : 0;
m_nNoActivate = CMainOption::s_dwMainExtendedStyle & MAIN_EX_NOACTIVATE ? 1 : 0;
m_nNoActivateNewWin = CMainOption::s_dwMainExtendedStyle & MAIN_EX_NOACTIVATE_NEWWIN ? 1 : 0;
m_nOneInstance = CMainOption::s_dwMainExtendedStyle & MAIN_EX_ONEINSTANCE ? 1 : 0;
m_nLimit = CMainOption::s_dwMainExtendedStyle & MAIN_EX_WINDOWLIMIT ? 1 : 0;
m_nNoCloseDFG = CMainOption::s_dwMainExtendedStyle & MAIN_EX_NOCLOSEDFG ? 1 : 0;
m_nNoMDI = CMainOption::s_dwMainExtendedStyle & MAIN_EX_NOMDI ? 1 : 0;
m_nBackUp = CMainOption::s_dwMainExtendedStyle & MAIN_EX_BACKUP ? 1 : 0;
m_nMaxWindowCount = CMainOption::s_dwMaxWindowCount;
m_nBackUpTime = CMainOption::s_dwBackUpTime;
m_nAddFavoriteOldShell = CMainOption::s_dwMainExtendedStyle & MAIN_EX_ADDFAVORITEOLDSHELL ? 1 : 0;
m_nOrgFavoriteOldShell = CMainOption::s_dwMainExtendedStyle & MAIN_EX_ORGFAVORITEOLDSHELL ? 1 : 0;
m_nLoadGlobalOffline = CMainOption::s_dwMainExtendedStyle & MAIN_EX_LOADGLOBALOFFLINE ? 1 : 0;
m_nKillDialog = CMainOption::s_dwMainExtendedStyle & MAIN_EX_KILLDIALOG ? 1 : 0;
m_nRegisterAsBrowser = CMainOption::s_dwMainExtendedStyle & MAIN_EX_REGISTER_AS_BROWSER ? 1 : 0;
m_nInheritOptions = CMainOption::s_dwMainExtendedStyle & MAIN_EX_INHERIT_OPTIONS ? 1 : 0;
}
};
// DL Control Flags
#define DLCTL_DEFAULT DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_BGSOUNDS
class CDLControlOption
{
public:
static DWORD s_dwDLControlFlags;// default flags
static void GetProfile()
{
CIniSection pr;
pr.Open(_szIniFileName, _T("Browser"));
if (pr.QueryValue(s_dwDLControlFlags, _T("DLControl_Flags")) != ERROR_SUCCESS)
s_dwDLControlFlags = DLCTL_DEFAULT;
DWORD dwMozilla = 0;
pr.QueryValue(dwMozilla, _T("Mozilla"));
_bMozilla = (dwMozilla == 1) ? true : false;
DWORD dwNaviLcok = 0;
pr.QueryValue(dwNaviLcok, _T("NavigateLock"));
_bNaviLock = (dwNaviLcok == 1) ? true : false;
pr.Close();
}
static void WriteProfile()
{
CIniSection pr;
pr.Open(_szIniFileName, _T("Browser"));
pr.SetValue(s_dwDLControlFlags, _T("DLControl_Flags"));
pr.SetValue(_bMozilla ? 1 : 0, _T("Mozilla"));
pr.SetValue(_bNaviLock ? 1 : 0, _T("NavigateLock"));
pr.Close();
}
};
__declspec(selectany) DWORD CDLControlOption::s_dwDLControlFlags = 0;
/////////////////////////////////////////////////////////////////////////////
// CDLControlPropertyPage
class CDLControlPropertyPage : public CPropertyPageImpl<CDLControlPropertyPage>,
public CWinDataExchange<CDLControlPropertyPage>
{
public:
// Constants
enum { IDD = IDD_PROPPAGE_DLCONTROL };
// Data members
int m_nBGSounds, m_nVideos, m_nDLImages;
int m_nRunActiveXCtls, m_nDLActiveXCtls, m_nScripts, m_nJava;
int m_nMozilla;
int m_nNaviLock;
// DDX map
BEGIN_DDX_MAP(CDLControlPropertyPage)
DDX_CHECK(IDC_CHECK_DLCTL_BGSOUNDS, m_nBGSounds)
DDX_CHECK(IDC_CHECK_DLCTL_VIDEOS, m_nVideos)
DDX_CHECK(IDC_CHECK_DLCTL_DLIMAGES, m_nDLImages)
DDX_CHECK(IDC_CHECK_DLCTL_RUNACTIVEXCTLS, m_nRunActiveXCtls)
DDX_CHECK(IDC_CHECK_DLCTL_DLACTIVEXCTLS, m_nDLActiveXCtls)
DDX_CHECK(IDC_CHECK_DLCTL_SCRIPTS, m_nScripts)
DDX_CHECK(IDC_CHECK_DLCTL_JAVA, m_nJava)
DDX_CHECK(IDC_CHECK_MOZILLA, m_nMozilla)
DDX_CHECK(IDC_CHECK_NAVILOCK, m_nNaviLock)
END_DDX_MAP()
// Constructor
CDLControlPropertyPage()
{
_SetData();
}
// Overrides
BOOL OnSetActive()
{
SetModified(TRUE);
return DoDataExchange(FALSE);
}
BOOL OnKillActive()
{
return DoDataExchange(TRUE);
}
BOOL OnApply()
{
if (DoDataExchange(TRUE)) {
_GetData();
return TRUE;
}
else
return FALSE;
}
// Message map and handlers
BEGIN_MSG_MAP(CDLControlPropertyPage)
CHAIN_MSG_MAP(CPropertyPageImpl<CDLControlPropertyPage>)
END_MSG_MAP()
// Implementation
protected:
void _GetData()
{
// update dl control flags
CDLControlOption::s_dwDLControlFlags = 0;
if (m_nBGSounds == 1)
CDLControlOption::s_dwDLControlFlags |= DLCTL_BGSOUNDS;
if (m_nVideos == 1)
CDLControlOption::s_dwDLControlFlags |= DLCTL_VIDEOS;
if (m_nDLImages == 1)
CDLControlOption::s_dwDLControlFlags |= DLCTL_DLIMAGES;
if (m_nRunActiveXCtls == 0)
CDLControlOption::s_dwDLControlFlags |= DLCTL_NO_RUNACTIVEXCTLS;
if (m_nDLActiveXCtls == 0)
CDLControlOption::s_dwDLControlFlags |= DLCTL_NO_DLACTIVEXCTLS;
if (m_nScripts == 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -