📄 wmsnodelogmodules.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 + -