⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 donutoptions.h

📁 一个使用wtl写的完整的多窗口浏览器
💻 H
📖 第 1 页 / 共 3 页
字号:

		pr.QueryValue(m_dwAutoRefreshStyle, _T("Auto_Refresh_Style"));
		_SetTimer();

		if (bGetChildFrameState)
			MtlGetProfileChildFrameState(pr, __m_pDonutView->GetParent(), SW_SHOWNORMAL, true, _T("child."));

		// load extended style
		pr.QueryValue(m_dwExStyle, _T("Extended_Style"));// never give up yeah.

		if (_check_flag(DVS_EX_OPENNEWWIN, m_dwExStyle)) {
			MtlSendOnCommand(__m_pDonutView->GetParent(), ID_DOCHOSTUI_OPENNEWWIN);
		}
		
		pr.Close();
	}

// Update command UI and handlers
	BEGIN_UPDATE_COMMAND_UI_MAP(CDonutViewOption)
		UPDATE_COMMAND_UI_SETCHECK_IF_PASS(ID_AUTOREFRESH_NONE, m_dwAutoRefreshStyle == 0)
		UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_AUTOREFRESH_15SEC, DVS_AUTOREFRESH_15SEC, m_dwAutoRefreshStyle)
		UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_AUTOREFRESH_30SEC, DVS_AUTOREFRESH_30SEC, m_dwAutoRefreshStyle)
		UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_AUTOREFRESH_1MIN, DVS_AUTOREFRESH_1MIN, m_dwAutoRefreshStyle)
		UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_AUTOREFRESH_2MIN, DVS_AUTOREFRESH_2MIN, m_dwAutoRefreshStyle)
		UPDATE_COMMAND_UI_SETCHECK_FLAG(ID_AUTOREFRESH_5MIN, DVS_AUTOREFRESH_5MIN, m_dwAutoRefreshStyle)
		UPDATE_COMMAND_UI_ENABLE_SETCHECK_FLAG(ID_DOCHOSTUI_OPENNEWWIN, DVS_EX_OPENNEWWIN, m_dwExStyle)
	END_UPDATE_COMMAND_UI_MAP()
};

#define FILENEW_BLANK	0x00000001L
#define FILENEW_COPY	0x00000002L
#define FILENEW_HOME	0x00000004L

class CFileNewOption
{
public:
	static DWORD s_dwFlags;

	static void GetProfile()
	{
		CIniSection pr;

		pr.Open(_szIniFileName, _T("Main"));
		pr.QueryValue(s_dwFlags, _T("File_New_Option"));
		pr.Close();
	}

	static void WriteProfile()
	{
		CIniSection pr;

		pr.Open(_szIniFileName, _T("Main"));
		pr.SetValue(s_dwFlags, _T("File_New_Option"));
		pr.Close();
	}
};

__declspec(selectany) DWORD CFileNewOption::s_dwFlags = FILENEW_BLANK;

class CFileNewPropertyPage : public CPropertyPageImpl<CFileNewPropertyPage>,
	public CWinDataExchange<CFileNewPropertyPage>
{
public:
// Constants
	enum { IDD = IDD_PROPPAGE_FILENEW };

// Data members
	int m_nRadio;

// DDX map
	BEGIN_DDX_MAP(CFileNewPropertyPage)
		DDX_RADIO(IDC_RADIO_BLANK, m_nRadio)
//		DDX_RADIO(IDC_RADIO_COPY, m_bCopy)
//		DDX_RADIO(IDC_RADIO_HOME, m_bHome)
	END_DDX_MAP()

// Constructor
	CFileNewPropertyPage()
	{
		_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(CFileNewPropertyPage)
		CHAIN_MSG_MAP(CPropertyPageImpl<CFileNewPropertyPage>)
	END_MSG_MAP()

// Implementation
protected:
	void _GetData()
	{
		// update dl control flags
		CFileNewOption::s_dwFlags = 0;
	
		switch (m_nRadio) {
		case 0:
			CFileNewOption::s_dwFlags = FILENEW_BLANK;
			break;
		case 1:
			CFileNewOption::s_dwFlags = FILENEW_COPY;
			break;
		case 2:
			CFileNewOption::s_dwFlags = FILENEW_HOME;
			break;
		default:
			ATLASSERT(FALSE);
			break;
		}
	}

	void _SetData()
	{
		if (CFileNewOption::s_dwFlags == FILENEW_BLANK)
			m_nRadio = 0;
		else if (CFileNewOption::s_dwFlags == FILENEW_COPY)
			m_nRadio = 1;
		else if (CFileNewOption::s_dwFlags == FILENEW_HOME)
			m_nRadio = 2;
		else
			ATLASSERT(FALSE);
//		m_nRadio = CFileNewOption::s_dwFlags & FILENEW_BLANK ? TRUE : FALSE;
//		m_bCopy = CFileNewOption::s_dwFlags & FILENEW_COPY ? TRUE : FALSE;
//		m_bHome = CFileNewOption::s_dwFlags & FILENEW_HOME ? TRUE : FALSE;
	}
};


#define STARTUP_NOINITWIN	0x00000000L
#define STARTUP_GOHOME		0x00000001L
#define STARTUP_LATEST		0x00000002L
#define STARTUP_DFG	0x00000004L

class CStartUpOption
{
public:
	static DWORD s_dwFlags;
	static TCHAR s_szDfgPath[MAX_PATH];

	static void GetProfile()
	{
		CIniSection pr;

		pr.Open(_szIniFileName, _T("StartUp"));
		pr.QueryValue(s_dwFlags, _T("StartUp_Flags"));
		DWORD dwCount = MAX_PATH;
		if (pr.QueryValue(s_szDfgPath, _T("Favorite_Group"), &dwCount) != ERROR_SUCCESS)
			::lstrcpy(s_szDfgPath, _T(""));
		pr.Close();
	}

	static void WriteProfile()
	{
		CIniSection pr;

		pr.Open(_szIniFileName, _T("StartUp"));
		pr.SetValue(s_dwFlags, _T("StartUp_Flags"));
		pr.SetValue(s_szDfgPath, _T("Favorite_Group"));
		pr.Close();
	}

	template <class _MainFrame>
	static void StartUp(_MainFrame& __frame)
	{
		HWND hWndChild = NULL;
		switch (s_dwFlags) {
		case STARTUP_NOINITWIN:
			break;
		case STARTUP_GOHOME:
			hWndChild = __frame.OnUserOpenFile(NULL, 0);
			if (hWndChild) {
				CWebBrowser2 browser = DonutGetIWebBrowser2(hWndChild);
				if (browser.m_spBrowser != NULL)
					browser.GoHome();
			}

			break;
		case STARTUP_LATEST:
			__frame.OnUserOpenFile(GetDefaultDFGFilePath(), 0);
			break;
		case STARTUP_DFG: {
			CString strPath(s_szDfgPath);
			if (!strPath.IsEmpty())
				__frame.OnUserOpenFile(s_szDfgPath, 0);
						  }
			break;
		default:
			ATLASSERT(FALSE);
			break;
		}
	}

	static CString GetDefaultDFGFilePath()
	{
		TCHAR sz[MAX_PATH];
		::GetModuleFileName(_Module.GetModuleInstance(), sz, MAX_PATH);
		CString strPath(sz);

		int nIndex = strPath.ReverseFind(_T('\\'));
		strPath = strPath.Left(nIndex);
		strPath += _T("\\Default.dfg");

		return strPath;
	}
};

__declspec(selectany) DWORD CStartUpOption::s_dwFlags = STARTUP_GOHOME;
/*__declspec(selectany)*/ TCHAR CStartUpOption::s_szDfgPath[MAX_PATH];

class CStartUpPropertyPage : public CPropertyPageImpl<CStartUpPropertyPage>,
	public CWinDataExchange<CStartUpPropertyPage>
{
public:
// Constants
	enum { IDD = IDD_PROPPAGE_STARTUP };

// Data members
	int m_nRadio;
	CString m_strDfg;
	CEdit m_edit;

// DDX map
	BEGIN_DDX_MAP(CStartUpPropertyPage)
		DDX_RADIO(IDC_RADIO_NOINITWIN, m_nRadio)
		DDX_TEXT_LEN(IDC_EDIT_DFG, m_strDfg, MAX_PATH)
	END_DDX_MAP()

// Constructor
	CStartUpPropertyPage()
	{
		_SetData();
	}

// Overrides
	BOOL OnSetActive()
	{
		SetModified(TRUE);

		if (m_edit.m_hWnd == NULL)
			m_edit.Attach(GetDlgItem(IDC_EDIT_DFG));

		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(CStartUpPropertyPage)
		COMMAND_ID_HANDLER_EX(IDC_BUTTON_EXPDFG, OnButton)
		CHAIN_MSG_MAP(CPropertyPageImpl<CStartUpPropertyPage>)
	END_MSG_MAP()

	void OnButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/)
	{
		TCHAR szOldPath[MAX_PATH];// save current directory
		::GetCurrentDirectory(MAX_PATH, szOldPath);

		::SetCurrentDirectory(DonutGetFavoriteGroupFolder());

		static const TCHAR szFilter[] = _T("Donut Favorite Group File(*.dfg)\0*.dfg\0\0");

		CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter);
		fileDlg.m_ofn.lpstrTitle = _T("Start up Favorite Group");
		if (fileDlg.DoModal() == IDOK) {
			m_edit.SetWindowText(fileDlg.m_szFileName);
		}

		// restore current directory
		::SetCurrentDirectory(szOldPath);
	}

// Implementation
protected:
	void _GetData()
	{
		// update dl control flags
		CStartUpOption::s_dwFlags = 0;
	
		switch (m_nRadio) {
		case 0:
			CStartUpOption::s_dwFlags = STARTUP_NOINITWIN;
			break;
		case 1:
			CStartUpOption::s_dwFlags = STARTUP_GOHOME;
			break;
		case 2:
			CStartUpOption::s_dwFlags = STARTUP_LATEST;
			break;
		case 3:
			CStartUpOption::s_dwFlags = STARTUP_DFG;
			break;
		default:
			ATLASSERT(FALSE);
			break;
		}

		m_edit.GetWindowText(CStartUpOption::s_szDfgPath, MAX_PATH);
	}

	void _SetData()
	{
		if (CStartUpOption::s_dwFlags == STARTUP_NOINITWIN)
			m_nRadio = 0;
		else if (CStartUpOption::s_dwFlags == STARTUP_GOHOME)
			m_nRadio = 1;
		else if (CStartUpOption::s_dwFlags == STARTUP_LATEST)
			m_nRadio = 2;
		else if (CStartUpOption::s_dwFlags == STARTUP_DFG)
			m_nRadio = 3;
		else
			ATLASSERT(FALSE);

		m_strDfg = CStartUpOption::s_szDfgPath;
	}
};


class COpenURLDlg : public CDialogImpl<COpenURLDlg>,
	public CWinDataExchange<COpenURLDlg>	
{
public:
// Declarations
	enum { IDD = IDD_DIALOG_OPENURL };

// Data members
	CString m_strEdit;
	CEdit m_edit;

// Constructor
	COpenURLDlg()
	{
	}

// DDX map
	BEGIN_DDX_MAP(COpenURLDlg)
		DDX_TEXT_LEN(IDC_EDIT_URL, m_strEdit, INTERNET_MAX_PATH_LENGTH)
	END_DDX_MAP()

// Message map and handlers
	BEGIN_MSG_MAP(COpenURLDlg)
		MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
		COMMAND_ID_HANDLER(IDOK, OnCloseCmd)
		COMMAND_ID_HANDLER(IDCANCEL, OnCloseCmd)
		COMMAND_ID_HANDLER_EX(IDC_BUTTON_REF, OnRefCmd)
	END_MSG_MAP()

	LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		CenterWindow(GetParent());
		DoDataExchange(FALSE);

		m_edit.Attach(GetDlgItem(IDC_EDIT_URL));
		return 0;
	}

	LRESULT OnCloseCmd(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
	{
		DoDataExchange(TRUE);
		EndDialog(wID);
		return 0;
	}

	void OnRefCmd(UINT /*wNotifyCode*/, int /*wID*/, HWND /*hWndCtl*/)
	{
		const TCHAR szFilter[] = _T("HTML File(*.htm;*.html)\0*.htm;*.html\0")
			_T("Donut Favorite Group File(*.dfg)\0*.dfg\0")
			_T("Text File(*.txt)\0*.txt\0")
			_T("GIF File(*.gif)\0*.gif\0")
			_T("JPEG File(*.jpg;*.jpeg)\0*.jpg;*.jpeg\0")
			_T("AU僼 File(*.au)\0*.au\0")
			_T("AIFF File(*.aif;*.aiff)\0*.aif;*.aiff\0")
			_T("XBM File(*.xbm)\0*.xbm\0")
			_T("All Files(*.*)\0*.*\0\0");

		CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter);
		fileDlg.m_ofn.lpstrTitle = _T("Open");
		if (fileDlg.DoModal() == IDOK) {
			m_edit.SetWindowText(fileDlg.m_szFileName);
		}
	}
};

//////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -