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

📄 proppagemimetypes.cpp

📁 ftpserver very good sample
💻 CPP
字号:
// PropPageMimeTypes.cpp : implementation file//#include "stdafx.h"#include "warmmcsnapin.h"#include "PropPageMimeTypes.h"#include "DlgMimeType.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CPropPageMimeTypes property pageIMPLEMENT_DYNCREATE(CPropPageMimeTypes, CPropertyPage)CPropPageMimeTypes::CPropPageMimeTypes(war_if_mime_types_ptr_t& rMimePtr) : CPropertyPage(CPropPageMimeTypes::IDD),mMimePtr(rMimePtr){	//{{AFX_DATA_INIT(CPropPageMimeTypes)	m_Path = mMimePtr->GetFilePath().c_str();	m_UseLocalOs = mMimePtr->GetOsOption();	//}}AFX_DATA_INIT}CPropPageMimeTypes::~CPropPageMimeTypes(){}void CPropPageMimeTypes::DoDataExchange(CDataExchange* pDX){	CPropertyPage::DoDataExchange(pDX);	//{{AFX_DATA_MAP(CPropPageMimeTypes)	DDX_Control(pDX, IDC_LIST, m_ctlList);	DDX_Text(pDX, IDC_PATH, m_Path);	DDX_Check(pDX, IDC_USE_LOCAL_OS, m_UseLocalOs);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CPropPageMimeTypes, CPropertyPage)	//{{AFX_MSG_MAP(CPropPageMimeTypes)	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)	ON_NOTIFY(NM_RCLICK, IDC_LIST, OnRclickList)	ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)	ON_COMMAND(ID_POPUP_NEW, OnPopupNew)	ON_COMMAND(ID_POPUP_DELETE, OnPopupDelete)	ON_COMMAND(ID_POPUP_PROPERTIES, OnPopupProperties)	ON_EN_CHANGE(IDC_PATH, OnChange)	ON_BN_CLICKED(IDC_USE_LOCAL_OS, OnChange)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPropPageMimeTypes message handlersvoid CPropPageMimeTypes::OnBrowse() {	UpdateData();	CFileDialog dlg(TRUE, NULL, m_Path, 0, _T("All Files (*.*)|*.*||"), NULL);	if (dlg.DoModal() == IDOK)	{		m_Path = dlg.GetPathName();		UpdateData(FALSE);		SetModified();	}}BOOL CPropPageMimeTypes::OnInitDialog() {	CPropertyPage::OnInitDialog();		CString hdr_name;    hdr_name.LoadString(IDS_MIME_EXT);    m_ctlList.InsertColumn(0, hdr_name, LVCFMT_LEFT, 170, 0);    hdr_name.LoadString(IDS_MIME_TYPE);    m_ctlList.InsertColumn(1, hdr_name, LVCFMT_LEFT, 1000, 1);	    ReloadList();		return TRUE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE}void CPropPageMimeTypes::ReloadList(){	m_ctlList.DeleteAllItems();	WarIfMimeTypes::mime_map_t types;	mMimePtr->GetMimeTypes(types);	for(WarIfMimeTypes::mime_map_t::const_iterator P = types.begin()		; P != types.end()		; ++P)	{		WarCollector<TCHAR> name = P->first, mime_type = P->second;		LVITEM i;        memset(&i, 0, sizeof(i));        i.mask = LVIF_TEXT;        i.pszText = (LPTSTR)name.GetValue().c_str();        int index = m_ctlList.InsertItem(&i);        m_ctlList.SetItemText(index, 1, mime_type.GetValue().c_str());	}}BOOL CPropPageMimeTypes::OnApply() {	UpdateData();	mMimePtr->SetFilePath(m_Path);	mMimePtr->SetOsOption(m_UseLocalOs);	WarIfMimeTypes::mime_map_t mime_types;	for(int index = 0; index < m_ctlList.GetItemCount(); index++)	{		WarCollector<war_sysch_t> ext = m_ctlList.GetItemText(index, 0);		WarCollector<char> value = m_ctlList.GetItemText(index, 1);		mime_types.insert(WarIfMimeTypes::mime_map_t::value_type(			ext.GetValue(), value.GetValue()));	}	mMimePtr->SetMimeTypes(mime_types);		return CPropertyPage::OnApply();}void CPropPageMimeTypes::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult) {	CPoint pos, client_pos;	GetCursorPos(&pos);	client_pos = pos;	UINT flags = 0;	m_ctlList.ScreenToClient(&client_pos);	int targeted_item = m_ctlList.HitTest(client_pos, &flags);    CMenu MenuT, *Menu;    MenuT.LoadMenu(IDR_POPUP_MIME_TYPES);     Menu = MenuT.GetSubMenu(0);	Menu->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, pos.x, pos.y, this);    Menu->DestroyMenu();		*pResult = 0;}void CPropPageMimeTypes::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) {	OnPopupProperties();		*pResult = 0;}void CPropPageMimeTypes::OnPopupNew() {	CDlgMimeType dlg;	if (dlg.DoModal() == IDOK)	{		LVITEM i;        memset(&i, 0, sizeof(i));        i.mask = LVIF_TEXT;        i.pszText = (LPTSTR)(LPCTSTR)dlg.m_Extension;        int index = m_ctlList.InsertItem(&i);        m_ctlList.SetItemText(index, 1, dlg.m_Value);		SetModified();	}}void CPropPageMimeTypes::OnPopupDelete() {	for(int index = 0; index < m_ctlList.GetItemCount(); index++)    {        LVITEM i;        memset(&i, 0, sizeof(i));        i.mask = LVIF_PARAM | LVIF_STATE;        i.stateMask = LVIS_SELECTED;        i.iItem = index;        m_ctlList.GetItem(&i);                if (i.state & LVIS_SELECTED)        {            m_ctlList.DeleteItem(index);            index--;			SetModified();        }    }}void CPropPageMimeTypes::OnPopupProperties() {	POSITION pos = m_ctlList.GetFirstSelectedItemPosition();	while(pos)	{		int item = m_ctlList.GetNextSelectedItem(pos);		CDlgMimeType dlg;		dlg.m_Extension = m_ctlList.GetItemText(item, 0);		dlg.m_Value = m_ctlList.GetItemText(item, 1);		if (dlg.DoModal() == IDOK)		{			m_ctlList.SetItemText(item, 0, dlg.m_Extension);			m_ctlList.SetItemText(item, 1, dlg.m_Value);			SetModified();		}	}}void CPropPageMimeTypes::OnChange() {	SetModified();}

⌨️ 快捷键说明

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