// ViewFax.cpp : 实现文件 // #include "stdafx.h" #include "VoiceStation.h" #include "ViewFax.h" #include "DeviceMgr.h" #include "DevFax.h" #include "LineAudio.h" #include "DisplayWnd.h" // CViewFax IMPLEMENT_DYNAMIC(CViewFax, CListCtrl) CViewFax::CViewFax() { } CViewFax::~CViewFax() { } /***************************************************************** **【函数名称】 __indexItem **【函数功能】 索引资源 **【参数】 **【返回值】 ****************************************************************/ int CViewFax::__indexItem( UINT ResId ) { int Count = GetItemCount(); for (int i=0; i < Count; ++i) { if (GetItemData(i) == ResId) return i; } return -1; } /***************************************************************** **【函数名称】 __addRes **【函数功能】 向List中添加资源 **【参数】 **【返回值】 ****************************************************************/ int CViewFax::__addRes( UINT ResId ) { int Index = GetItemCount(); CString strResID; strResID.Format(_T("%d"), ResId); Index = InsertItem(Index, strResID); SetItemData(Index, ResId); return Index; } /***************************************************************** **【函数名称】 __delRes **【函数功能】 删除资源 **【参数】 **【返回值】 ****************************************************************/ void CViewFax::__delRes( UINT ResId ) { int Index = __indexItem(ResId); if (Index != -1) { // 界面删除行 DeleteItem(Index); } } /***************************************************************** **【函数名称】 create **【函数功能】 控件初始化 **【参数】 **【返回值】 ****************************************************************/ bool CViewFax::create( CDisplayWnd* pWnd ) { ASSERT(pWnd != NULL); CString Name; Name.LoadString(IDS_STR_VIEW_FAX); // 创建pane if (!m_Pane.Create(Name, pWnd, CRect(0, 0, 400, 400), TRUE, IDS_STR_VIEW_FAX, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI)) { TRACE0("创建设备资源窗口失败"); return false; } m_Pane.EnableDocking(CBRS_ALIGN_ANY); //创建控件 if(!Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | LVS_REPORT | LVS_SORTASCENDING, CRect(0, 0, 0, 0), &m_Pane, IDC_LIST_LINE)) { TRACE0("创建设备资源控件失败\n"); return false; } SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); InsertColumn(COLUMN_RES_ID, _T("线路ID"), LVCFMT_LEFT, 140); InsertColumn(COLUMN_RES_STATE, _T("状态"), LVCFMT_LEFT, 140); InsertColumn(COLUMN_RES_ASSO_LINE, _T("关联线路"), LVCFMT_LEFT, 140); InsertColumn(COLUMN_RES_FAX_FILE, _T("传真文件"), LVCFMT_LEFT, 140); pWnd->OnNewPane(&m_Pane); return true; } /***************************************************************** **【函数名称】 onFaxStateUpdated **【函数功能】 传真状态更新处理函数 **【参数】 **【返回值】 ****************************************************************/ void CViewFax::onFaxStateUpdated( int ResId ) { CDevFax* pDev = CDeviceMgr::GetInstance().getFaxByID(ResId); ASSERT(pDev != NULL); if(pDev == NULL) return; int Index = __indexItem(ResId); if (Index == -1) // 未找到对应资源,则先创建 Index = __addRes(ResId); // 创建资源 ASSERT(Index != -1); CString Data; Data = pDev->state(); SetItemText(Index, COLUMN_RES_STATE, Data); CLineAudio* pLine = pDev->getAssoLine(); if(pLine == NULL) Data = _T(""); else Data.Format(_T("%d"), pLine->id()); SetItemText(Index, COLUMN_RES_ASSO_LINE, Data); SetItemText(Index, COLUMN_RES_STATE, pDev->faxFile()); } /***************************************************************** **【函数名称】 newSize **【函数功能】 调整控件大小 **【参数】 **【返回值】 ****************************************************************/ void CViewFax::newSize( CRect& Rect ) { if(IsWindow(GetSafeHwnd())) SetWindowPos(NULL, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER); } BEGIN_MESSAGE_MAP(CViewFax, CListCtrl) END_MESSAGE_MAP() // CViewFax 消息处理程序