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

📄 proppageoptions.cpp

📁 ftpserver very good sample
💻 CPP
字号:
// PropPageOptions.cpp : implementation file//#include "stdafx.h"#include "warmmcsnapin.h"#include "PropPageOptions.h"#include "DlgOption.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CPropPageOptions property pageCImageList *CPropPageOptions::mpImageList;IMPLEMENT_DYNCREATE(CPropPageOptions, CPropertyPage)CPropPageOptions::CPropPageOptions(war_if_options_ptr_t optPtr,                                   const WarOption::OptLevelE optLevel) : CPropertyPage(CPropPageOptions::IDD),mOptPtr(optPtr),mOptLevel(optLevel),mIsModified(false){	//{{AFX_DATA_INIT(CPropPageOptions)	m_bShowAll = FALSE;	//}}AFX_DATA_INIT    if (!mpImageList)    {        mpImageList = new CImageList;        mpImageList->Create(IDB_OPTIONS, 16, 0, RGB(0,128,128));    }}CPropPageOptions::~CPropPageOptions(){}void CPropPageOptions::DoDataExchange(CDataExchange* pDX){	CPropertyPage::DoDataExchange(pDX);	//{{AFX_DATA_MAP(CPropPageOptions)	DDX_Control(pDX, IDC_VALUE, m_ctlValue);	DDX_Control(pDX, IDC_EXPLAIN, m_ctlExplain);	DDX_Control(pDX, IDC_LIST, m_ctlList);	DDX_Check(pDX, IDC_SHOW_ALL, m_bShowAll);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CPropPageOptions, CPropertyPage)	//{{AFX_MSG_MAP(CPropPageOptions)	ON_BN_CLICKED(IDC_RESET, OnReset)	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnItemchangedList)	ON_BN_CLICKED(IDC_SHOW_ALL, OnShowAll)	ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CPropPageOptions message handlersBOOL CPropPageOptions::OnInitDialog() {	CPropertyPage::OnInitDialog();    CString hdr_name;    hdr_name.LoadString(IDS_HDRNAME);    m_ctlList.InsertColumn(0, hdr_name, LVCFMT_LEFT, 170, 0);    hdr_name.LoadString(IDS_HDR_VALUE);    m_ctlList.InsertColumn(1, hdr_name, LVCFMT_LEFT, 100, 1);    hdr_name.LoadString(IDS_HDR_DESCRIPTION);    m_ctlList.InsertColumn(2, hdr_name, LVCFMT_LEFT, 1000, 2);    m_ctlList.SetImageList(mpImageList, LVSIL_SMALL);	    ReloadList();	return TRUE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE}void CPropPageOptions::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) {	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;	    POSITION pos = m_ctlList.GetFirstSelectedItemPosition();    if (pos)    {        int index = m_ctlList.GetNextSelectedItem(pos);        WmsOption *p = (WmsOption *)m_ctlList.GetItemData(index);        WarCollector<TCHAR> descr;        descr << p->mDescription            << "\r\n\r\n=================================\r\n"            << "Type: "            << p->mType            << "\r\n"            << "Default value: "            << p->mDefaultValue;                m_ctlExplain.SetWindowText(descr.GetValue().c_str());        m_ctlValue.SetWindowText(p->mCurrentValue);    }		*pResult = 0;}void CPropPageOptions::OnShowAll() {	UpdateData();    ReloadList();}void CPropPageOptions::ReloadList(){    m_ctlList.DeleteAllItems();    WarIfOptions::option_def_list_t opts_list;	mOptPtr->EnumOptions(opts_list);    for(WarIfOptions::option_def_list_t::const_iterator P = opts_list.begin()        ; P != opts_list.end()        ; ++P)    {        if (!m_bShowAll)        {            if (mOptLevel != P->mLevel)                continue;        }        WmsOption *p = new WmsOption;        if (p->mHaveValue = mOptPtr->HasOwnOption(P->mName))        {            p->mCurrentValue = WarCollector<TCHAR>(                mOptPtr->GetOption(P->mName)).GetValue().c_str();        }        else        {            p->mCurrentValue = WarCollector<TCHAR>(P->mDefaultValue).GetValue().c_str();        }        p->mName = P->mName;        p->mDefaultValue = P->mDefaultValue;        p->mDescription = P->mDescription;        p->mType = P->mType;        p->mLevel = P->mLevel;        CString name_buf = WarCollector<TCHAR>(p->mName).GetValue().c_str();        LVITEM i;        memset(&i, 0, sizeof(i));        i.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_TEXT;        i.pszText = (LPTSTR)(LPCTSTR)name_buf;        i.lParam = (LPARAM)p;        i.iImage = p->mLevel * 2;        if (!p->mHaveValue)            ++i.iImage;        int index = m_ctlList.InsertItem(&i);        m_ctlList.SetItemText(index, 1, p->mCurrentValue);        m_ctlList.SetItemText(index, 2, WarCollector<TCHAR>(p->mDescription).GetValue().c_str());    }}void CPropPageOptions::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) {    POSITION pos = m_ctlList.GetFirstSelectedItemPosition();    if (pos)    {        int index = m_ctlList.GetNextSelectedItem(pos);        WmsOption *p = (WmsOption *)m_ctlList.GetItemData(index);        CDlgOption my_dlg(p);        if (my_dlg.DoModal() == IDOK)        {            SetModified();            mIsModified = true;            m_ctlList.SetItemText(index, 1, p->mCurrentValue);            m_ctlValue.SetWindowText(p->mCurrentValue);            m_ctlList.SetItem(index, 0, LVIF_IMAGE, NULL,                 (p->mLevel * 2) + (p->mHaveValue ? 0 : 1),                 0, 0, NULL);        }       }    EnableDisableControls();	*pResult = 0;}void CPropPageOptions::OnReset() {    int num_items = m_ctlList.GetItemCount();    int sel_item = -1;    POSITION pos = m_ctlList.GetFirstSelectedItemPosition();    if (pos)        sel_item = m_ctlList.GetNextSelectedItem(pos);    for(int index = 0; index < num_items; index++)    {        WmsOption *p = (WmsOption *)m_ctlList.GetItemData(index);        p->mHaveValue = false;        p->mCurrentValue = WarCollector<TCHAR>(p->mDefaultValue).GetValue().c_str();        m_ctlList.SetItemText(index, 1, p->mCurrentValue);        m_ctlList.SetItem(index, 0, LVIF_IMAGE, NULL,             (p->mLevel * 2) + (p->mHaveValue ? 0 : 1),             0, 0, NULL);                if (sel_item == index)            m_ctlValue.SetWindowText(p->mCurrentValue);    }    SetModified();    mIsModified = true;    EnableDisableControls();}BOOL CPropPageOptions::OnApply() {    int num_items = m_ctlList.GetItemCount();    for(int index = 0; index < num_items; index++)    {        WmsOption *p = (WmsOption *)m_ctlList.GetItemData(index);        if (p->mHaveValue)            mOptPtr->SetOption(p->mName,             WarCollector<char>(p->mCurrentValue).GetValue());        else            mOptPtr->ClearOption(p->mName);    }	BOOL rval = CPropertyPage::OnApply();    if (rval)        mIsModified = false;    EnableDisableControls();    return rval;}void CPropPageOptions::EnableDisableControls(){    GetDlgItem(IDC_SHOW_ALL)->EnableWindow(mIsModified == false);}

⌨️ 快捷键说明

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