#include "StdAfx.h" #include "ViewRes.h" #include "DisplayWnd.h" #include "ViewMgr.h" #include "resource.h" IMPLEMENT_DYNAMIC(CViewRes, CListCtrl) CViewRes::CViewRes(void) { } CViewRes::~CViewRes(void) { } BEGIN_MESSAGE_MAP(CViewRes, CListCtrl) ON_NOTIFY_REFLECT(NM_CLICK, &CViewRes::OnNMClick) END_MESSAGE_MAP() /***************************************************************** **【函数名称】 create **【函数功能】 控件初始化 **【参数】 **【返回值】 ****************************************************************/ bool CViewRes::create( CDisplayWnd* pWnd ) { ASSERT(pWnd != NULL); CString Name; Name.LoadString(IDS_STR_VIEW_RES); // 创建pane if (!m_Pane.Create(Name, pWnd, CRect(0, 0, 100, 100), TRUE, IDS_STR_VIEW_RES, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) { TRACE0("创建资源窗口失败"); return false; } m_Pane.EnableDocking(CBRS_ALIGN_ANY); //创建控件 if(!Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_ICON | LVS_ALIGNTOP | LVS_SINGLESEL, CRect(0, 0, 0, 0), &m_Pane, IDC_LIST_RES)) { TRACE0("创建资源列表控件失败\n"); return false; } // 设置关联图标 CImageList imgList; imgList.Create(32, 32, ILC_MASK|ILC_COLOR32, 3, 1); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_EXTEN)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_TRUNK)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_VOIP)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_IVR)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_MEETING)); imgList.Add(AfxGetApp()->LoadIcon(IDI_ICON_FAX)); SetImageList(&imgList, TVSIL_NORMAL); imgList.Detach(); pWnd->OnNewPane(&m_Pane); return true; } /***************************************************************** **【函数名称】 newSize **【函数功能】 调整控件大小 **【参数】 **【返回值】 ****************************************************************/ void CViewRes::newSize( CRect& Rect ) { if(IsWindow(GetSafeHwnd())) SetWindowPos(NULL, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER); } /***************************************************************** **【函数名称】 newRes **【函数功能】 新增资源类型 **【参数】 **【返回值】 ****************************************************************/ void CViewRes::newRes( UINT ResType ) { int Count = GetItemCount(); switch(ResType) { case DEV_RES_TYPE_EXT: SetItemData(InsertItem(Count, _T("分机资源"), 0), ResType); break; case DEV_RES_TYPE_TRUNK: SetItemData(InsertItem(Count, _T("中继资源"), 1), ResType); break; case DEV_RES_TYPE_VOIP: SetItemData(InsertItem(Count, _T("VOIP资源"), 2), ResType); break; case DEV_RES_TYPE_IVR: SetItemData(InsertItem(Count, _T("IVR线路资源"), 3), ResType); break; case DEV_RES_TYPE_CONFERENCE: SetItemData(InsertItem(Count, _T("会议资源"), 4), ResType); break; case DEV_RES_TYPE_FAX: SetItemData(InsertItem(Count, _T("传真资源"), 5), ResType); break; } } void CViewRes::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: 在此添加控件通知处理程序代码 if(pNMItemActivate->iItem != -1) { UINT ResType = GetItemData(pNMItemActivate->iItem); CViewMgr::GetInstance().showResView(ResType); SetItemState(pNMItemActivate->iItem, LVIS_SELECTED, LVIF_STATE); *pResult = 0; } }