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

📄 wmsnodelogmodules.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarMmcSnapin.h"#include "WmsNodeLogModules.h"   // class implemented#include "WarCollector.h"#include "WarIfServer.h"#include "WarIfLogModule.h"#include "PropPageLogModule.h"#include "WmsNodeLogModule.h"/////////////////////////////// PUBLIC ///////////////////////////////////////// {A9015769-5496-45cb-AFC1-EDCE8AAB5153}const GUID WmsNodeLogModules::thisGuid = { 0xa9015769, 0x5496, 0x45cb, { 0xaf, 0xc1, 0xed, 0xce, 0x8a, 0xab, 0x51, 0x53 } };WmsNodeLogModules::WmsNodeLogModules(war_if_server_ptr_t& rSvrPtr): mServicePtr(rSvrPtr) // Deleted by parent{}WmsNodeLogModules::~WmsNodeLogModules(){    ClearLogModules();}//============================= LIFECYCLE ====================================//============================= OPERATORS ====================================//============================= OPERATIONS ===================================//============================= CALLBACK     ===================================HRESULT WmsNodeLogModules::OnExpand(IConsoleNameSpace *pConsoleNameSpace,                                  IConsole *pConsole,                                  HSCOPEITEM parent){    if (GetHandle() == NULL)         SetHandle((HANDLE)parent);    if (!bExpanded)     {            }     return S_OK;   }HRESULT WmsNodeLogModules::OnSelect(IConsole *pConsole, BOOL bScope, BOOL bSelect){    IConsoleVerb *pConsoleVerb;    HRESULT hr = pConsole->QueryConsoleVerb(&pConsoleVerb);    _ASSERT(SUCCEEDED(hr));    //hr = pConsoleVerb->SetVerbState(MMC_VERB_RENAME, ENABLED, TRUE);    // can't get to properties (via the standard methods) unless    // we tell MMC to display the Properties menu item and    // toolbar button, this wil give the user a visual cue that    // there's "something" to do    hr = pConsoleVerb->SetVerbState(MMC_VERB_PROPERTIES, ENABLED, TRUE);    pConsoleVerb->Release();    return S_OK;}HRESULT WmsNodeLogModules::CreatePropertyPages(IPropertySheetCallback *lpProvider,                                                LONG_PTR handle){    AFX_MANAGE_STATE(AfxGetStaticModuleState());    EnumerateLogModules();    for(logmod_list_t::iterator P = mLogModules.begin()        ; P != mLogModules.end()        ; ++P)    {        CPropertyPage *pprop_page = NULL;        pprop_page = new CPropPageLogModule((*P));        pprop_page->m_psp.pszTitle = (*P)->GetName();        HRESULT hr = MMCPropPageCallback(&pprop_page->m_psp);        if (SUCCEEDED(hr))        {            PROPSHEETPAGE psp;            memset(&psp, 0, sizeof(psp));            memcpy(&psp, &pprop_page->m_psp, sizeof(pprop_page->m_psp));            psp.dwFlags = PSP_DEFAULT | PSP_USECALLBACK | PSP_USETITLE;            HPROPSHEETPAGE hpage = CreatePropertySheetPage(&psp);            if (NULL == hpage)                return E_UNEXPECTED;            lpProvider->AddPage(hpage);        }    }    return S_OK;}HRESULT WmsNodeLogModules::OnShow(IConsole *pConsole,                                   BOOL bShow,                                   HSCOPEITEM scopeitem){    AFX_MANAGE_STATE(AfxGetStaticModuleState());    HRESULT      hr = S_OK;        IHeaderCtrl *pHeaderCtrl = NULL;    IResultData *pResultData = NULL;        if (bShow)     {        hr = pConsole->QueryInterface(IID_IHeaderCtrl, (void **)&pHeaderCtrl);        _ASSERT(SUCCEEDED(hr));                hr = pConsole->QueryInterface(IID_IResultData, (void **)&pResultData);        _ASSERT(SUCCEEDED(hr));        CString hdr1_name, hdr2_name;        hdr1_name.LoadString(IDS_HDRNAME);        hdr2_name.LoadString(IDS_HDROPT);        MAKE_WIDEPTR_FROMTSTR(ptr_hdr1, hdr1_name);        MAKE_WIDEPTR_FROMTSTR(ptr_hdr2, hdr2_name);                // Set the column headers in the results pane        hr = pHeaderCtrl->InsertColumn( 0, ptr_hdr1, 0, MMCLV_AUTO );        _ASSERT( S_OK == hr );        hr = pHeaderCtrl->InsertColumn( 1, ptr_hdr2, 0, MMCLV_AUTO );        _ASSERT( S_OK == hr );                // insert items here        RESULTDATAITEM rdi;                hr = pResultData->DeleteAllRsltItems();        _ASSERT( SUCCEEDED(hr) );                if (!bExpanded)         {            // create the child nodes, then expand them            EnumerateLogModules();                        for(logmod_list_t::iterator P = mLogModules.begin()                ; P != mLogModules.end()                ; ++P)            {                         WmsNodeLogModule *pnew_module = new WmsNodeLogModule((*P));                ZeroMemory(&rdi, sizeof(RESULTDATAITEM) );                rdi.mask = RDI_STR | RDI_IMAGE | RDI_PARAM;                                rdi.nImage = pnew_module->GetBitmapIndex();                rdi.str = MMC_CALLBACK;                rdi.nCol = 0;                rdi.lParam = (LPARAM)pnew_module;                                hr = pResultData->InsertItem( &rdi );                _ASSERT( SUCCEEDED(hr) );            }        }                pHeaderCtrl->Release();        pResultData->Release();    }        return hr;}//============================= ACCESS     ===================================//============================= INQUIRY    ===================================const int WmsNodeLogModules::GetBitmapIndex(){    return NICON_LOG_MODULES;}const _TCHAR *WmsNodeLogModules::GetDisplayName(int nCol){    static _TCHAR szDisplayName[256] = {0};        if (!*szDisplayName)    {        LoadString(g_hinst,             IDS_LOGMODULESNAME,             szDisplayName,             sizeof(szDisplayName));    }        return szDisplayName; }const GUID & WmsNodeLogModules::getNodeType(){    return thisGuid; }/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////void WmsNodeLogModules::ClearLogModules(){    mLogModules.erase(mLogModules.begin(), mLogModules.end());}void WmsNodeLogModules::EnumerateLogModules(){    ClearLogModules();    // Enumerate log modules    WarIfServer::strlist_t log_modules;        try    {        mServicePtr->EnumLogModules(log_modules);        for(WarIfServer::strlist_t::iterator P = log_modules.begin()            ; P != log_modules.end()            ; ++P)        {               mLogModules.push_back(mServicePtr->GetLogModule(P->c_str()));        }    }    catch(WarException& ex)    {        WarCollector<TCHAR> err_msg;                err_msg << "Error enumerating log modules.\r\n"            << ex            << war_endl;                ::MessageBox(NULL, err_msg.GetValue().c_str(),             _T("Error"),             MB_OK | MB_ICONWARNING);    }}

⌨️ 快捷键说明

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