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

📄 usernode.h

📁 非常不错的财政管理系统
💻 H
字号:
#ifndef __UserNODE_H__
#define __UserNODE_H__

#include "FunctionItem.h"
#include <strsafe.h>


class CUserNode : public CBaseNodeItem<CUserNode>
{
	std::vector<CFunctionNodeItem*> m_vecItems;
public:

	CComBSTR m_bstrFullName;
	CComBSTR m_bstrDes;
	CComBSTR m_bstrGroups;
	CComBSTR m_bstrGUID;
	CUserNode(BSTR bstrName,BSTR bstrFullName,BSTR bstrDes,BSTR bstrGroups,	BSTR bstrGUID)
	{ 
		//名称
		m_bstrDisplayName.Empty();
		m_bstrDisplayName.Attach(bstrName);
        
		//全名
        m_bstrFullName.Empty();
	    m_bstrFullName.Attach(bstrFullName);

       //描述
		m_bstrDes.Empty();
        m_bstrDes.Attach(bstrDes);

       //所属的组
		m_bstrGroups.Empty();
		m_bstrGroups.Attach(bstrGroups);
		//用户的GUID
	    m_bstrGUID.Empty();
        m_bstrGUID.Attach(bstrGUID);
/**/

		memset(&m_scopeDataItem, 0, sizeof(SCOPEDATAITEM));
		m_scopeDataItem.mask = SDI_STR | SDI_IMAGE | SDI_OPENIMAGE | SDI_PARAM | SDI_CHILDREN;
		m_scopeDataItem.displayname = MMC_CALLBACK;
		m_scopeDataItem.nImage = 0; 		
		m_scopeDataItem.nOpenImage = 1;
		m_scopeDataItem.lParam = (LPARAM) this;
		
		memset(&m_resultDataItem, 0, sizeof(RESULTDATAITEM));

		for(int i=0; i<10; i++)
		{
			const size_t cchBuffer = 50;
			static _TCHAR buf[cchBuffer];
			StringCchPrintf(buf, cchBuffer, _T("功能模块%d"),i);
			CComBSTR bstr(buf);
			m_vecItems.push_back(new CFunctionNodeItem(bstr.Detach()));
		}
	}



	~CUserNode()
	{
		for(int i=0; i<m_vecItems.size(); i++)
			delete m_vecItems[i];
	}


	STDMETHOD(GetResultViewType)(LPOLESTR *ppViewType,long *pViewOptions)
	{
		*ppViewType = NULL;
		*pViewOptions = MMC_VIEW_OPTIONS_NONE;
		return S_FALSE;
	}


	STDMETHOD(QueryPagesFor)(DATA_OBJECT_TYPES type)
	{
		if (type == CCT_SCOPE || type == CCT_RESULT)
			return S_OK;
		return S_FALSE;
	}

	HRESULT OnSelect(IConsole *spConsole, IComponent* pComponent)
	{
		IConsoleVerb *pConsoleVerb;
		HRESULT hr = spConsole->QueryConsoleVerb(&pConsoleVerb);
		_ASSERT(SUCCEEDED(hr));
		//hr = pConsoleVerb->SetVerbState(MMC_VERB_REFRESH, ENABLED, TRUE);
	//	_ASSERT(SUCCEEDED(hr));
	//	hr = pConsoleVerb->SetVerbState(MMC_VERB_PROPERTIES, ENABLED, TRUE);
	//	_ASSERT(SUCCEEDED(hr));
		pConsoleVerb->Release();
		
		return S_OK;
	}

	LPOLESTR GetResultPaneColInfo(int nCol)
	{
	   switch (nCol)
	   {
	   case 0:
		  return m_bstrDisplayName;
	   case 1:
			
		   return	m_bstrGroups;
		//  return OLESTR("所属的组");
	   case 2: 	
		  return m_bstrFullName;
		 //  return OLESTR("全名");
	   case 3:	
		   return m_bstrDes;
		//  return OLESTR("描述");
	   case 4:	
		   return m_bstrGUID;
		//  return OLESTR("全局标识(GUID)");

	   }

	   return OLESTR("Override GetResultPaneColInfo");
	}
	HRESULT OnShow(IConsole *pConsole, BOOL bShow)
	{
		HRESULT hr = S_FALSE;
		if(bShow)
		{        
			CComQIPtr<IResultData, &IID_IResultData> spResultData(pConsole);
			CComQIPtr<IHeaderCtrl, &IID_IHeaderCtrl> spHeaderCtrl(pConsole);
			//spResultData->SetDescBarText(OLESTR("Bleh"));
			//spResultData->SetViewMode(LVS_LIST);
			HRESULT hr = spResultData->DeleteAllRsltItems();
			/*
			CComPtr<IDataObject, &IID_IDataObject> spDataObject;
			GetDataObject(&spDataObject, CCT_SCOPE);
			pConsole->UpdateAllViews(spDataObject, 0, 0);
			*/
			hr = spHeaderCtrl->InsertColumn( 0, L"模块名", 0,  MMCLV_AUTO);
			hr = spHeaderCtrl->InsertColumn( 1, L"用户权限级别", 0,  MMCLV_AUTO);
			hr = spHeaderCtrl->InsertColumn( 2, L"所属的组最高权限级别", 0,  MMCLV_AUTO);

		    for(int i=0; i<m_vecItems.size(); i++)
			{
				m_vecItems[i]->m_resultDataItem.nImage=INDEX_FUNCTION ;

				hr=spResultData->InsertItem(&m_vecItems[i]->m_resultDataItem);
				_ASSERT( SUCCEEDED(hr) );
			}
		}
		return S_FALSE;
	}	 

};
#endif //__UserNODE_H__

⌨️ 快捷键说明

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