configclearpage.h

来自「一个管理ie的软件」· C头文件 代码 · 共 161 行

H
161
字号
// ConfigClearPage.h : interface of the CConfigClearPage class
//
/////////////////////////////////////////////////////////////////////////////

#ifndef __ConfigClearPage_h__
#define __ConfigClearPage_h__

class CConfigClearPage : public CPropertyPageImpl<CConfigClearPage>
{
public:
	enum { IDD = IDD_CONFIG_CLEAR };

	BOOL			m_bClearAtExit;
	DWORD			m_dwClearSettings;

	CListViewCtrl	m_listItem;
	CButton			m_btnClearAtExit;

	BEGIN_MSG_MAP(CConfigClearPage)
		MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
		NOTIFY_HANDLER(IDC_ITEM_LIST, LVN_ITEMCHANGED, OnItemStateChanged)
		COMMAND_HANDLER(IDC_CLEAR_ON_EXIT, BN_CLICKED, OnClickedClearAtExit)
		CHAIN_MSG_MAP(CPropertyPageImpl<CConfigClearPage>)
	END_MSG_MAP()

	LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		m_btnClearAtExit.Attach(GetDlgItem(IDC_CLEAR_ON_EXIT));
		m_btnClearAtExit.SetCheck(m_bClearAtExit ? 1 : 0);

		DWORD dwStyle;
		m_listItem.Attach(GetDlgItem(IDC_ITEM_LIST));
		dwStyle = m_listItem.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
		dwStyle |= LVS_EX_CHECKBOXES;
		m_listItem.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);

		// set column header
		LV_COLUMN lvc;
		lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;

		lvc.iSubItem = 0;
		lvc.pszText = _T("");
		lvc.cx = 250;
		lvc.fmt = LVCFMT_LEFT;
		m_listItem.InsertColumn(0, &lvc);

		//fill list
		int i = 0;

		InsertClearItem(i, IDS_CLEAR_URL_HISTORY, CLEAR_URL_HISTORY);

		i++;
		InsertClearItem(i, IDS_CLEAR_TYPED_URL, CLEAR_TYPED_URL);

		i++;
		InsertClearItem(i, IDS_CLEAR_CACHE, CLEAR_CACHE);

		i++;
		InsertClearItem(i, IDS_CLEAR_COOKIES, CLEAR_COOKIES);

		i++;
		InsertClearItem(i, IDS_CLEAR_AUTOCOMPLETE_FORMS, CLEAR_AUTOCOMPLETE_FORMS);

		i++;
		InsertClearItem(i, IDS_CLEAR_AUTOCOMPLETE_PWDS, CLEAR_AUTOCOMPLETE_PWDS);

		i++;
		InsertClearItem(i, IDS_CLEAR_FAVORITES, CLEAR_FAVORITES);

//		i++;
//		InsertClearItem(i, IDS_CLEAR_RAS_AUTODIAL, CLEAR_RAS_AUTODIAL);

		i++;
		InsertClearItem(i, IDS_CLEAR_TEMP, CLEAR_TEMP);

		i++;
		InsertClearItem(i, IDS_CLEAR_RECYCLEBIN, CLEAR_RECYCLEBIN);

		i++;
		InsertClearItem(i, IDS_CLEAR_RUN_HISTORY, CLEAR_RUN_HISTORY);

		i++;
		InsertClearItem(i, IDS_CLEAR_RECENT_DOCUMENTS, CLEAR_RECENT_DOCUMENTS);

		i++;
		InsertClearItem(i, IDS_CLEAR_LAST_LOGON_USER, CLEAR_LAST_LOGON_USER);

		i++;
		InsertClearItem(i, IDS_CLEAR_FIND_FILES_HISTORY, CLEAR_FIND_FILES_HISTORY);

		i++;
		InsertClearItem(i, IDS_CLEAR_FIND_COMPUTER_HISTORY, CLEAR_FIND_COMPUTER_HISTORY);

		i++;
		InsertClearItem(i, IDS_CLEAR_NETWORK_HISTORY, CLEAR_NETWORK_HISTORY);

		i++;
		InsertClearItem(i, IDS_CLEAR_TELNET_HISTORY, CLEAR_TELNET_HISTORY);
		return TRUE;
	}

	LRESULT OnItemStateChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
	{
		NMLISTVIEW* pnmv = (LPNMLISTVIEW)pnmh;

		if (pnmv->uOldState == 0 && pnmv->uNewState == 0)
			return 0;	// No change

		// Old check box state
		BOOL bPrevState = (BOOL)(((pnmv->uOldState & LVIS_STATEIMAGEMASK)>>12)-1);
		if (bPrevState < 0)	// On startup there's no previous state 
			bPrevState = 0; // so assign as false (unchecked)

		// New check box state
		BOOL bChecked = (BOOL)(((pnmv->uNewState & LVIS_STATEIMAGEMASK)>>12)-1);   
		if (bChecked < 0) // On non-checkbox notifications assume false
			bChecked = 0;

		if (bPrevState == bChecked) // No change in check box
			return 0;

		if (bChecked)
		{
			m_dwClearSettings |= pnmv->lParam;
		}
		else
		{
			m_dwClearSettings &= ~(pnmv->lParam);
		}

		return 0;
	}

	LRESULT OnClickedClearAtExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
	{
		m_bClearAtExit = m_btnClearAtExit.GetCheck();
		return 0;
	}

	void InsertClearItem(int iItem, UINT nTextId, DWORD dwFlag)
	{
		CString sItemText;
		sItemText.LoadString(nTextId);

		LV_ITEM	lvi;
		lvi.mask = LVIF_TEXT | LVIF_PARAM;
		lvi.iItem = iItem;
		lvi.iSubItem = 0;
		lvi.lParam = dwFlag;
		lvi.pszText = sItemText.LockBuffer();
		int nIndex = m_listItem.InsertItem(&lvi);
		sItemText.UnlockBuffer();
		ListView_SetItemState(m_listItem.m_hWnd, nIndex, 
			INDEXTOSTATEIMAGEMASK((m_dwClearSettings & dwFlag) ? 2 : 1), 
			LVIS_STATEIMAGEMASK);
	}
};


#endif //__ConfigClearPage_h__

⌨️ 快捷键说明

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