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

📄 infoformview.cpp

📁 一个OPC客户端监视程序
💻 CPP
字号:
// InfoFormView.cpp : implementation file
//

#include "stdafx.h"
#include "OpcClientSpy.h"
#include "InfoFormView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CInfoFormView

IMPLEMENT_DYNCREATE(CInfoFormView, CFormView)

CInfoFormView::CInfoFormView()
	: CFormView(CInfoFormView::IDD)
{
	//{{AFX_DATA_INIT(CInfoFormView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_pImageList = NULL;
}

CInfoFormView::~CInfoFormView()
{
	if( m_pImageList )
		delete m_pImageList;
}

void CInfoFormView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInfoFormView)
	DDX_Control(pDX, IDC_LIST_INFO, m_info);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInfoFormView, CFormView)
	//{{AFX_MSG_MAP(CInfoFormView)
	ON_WM_CREATE()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInfoFormView diagnostics

#ifdef _DEBUG
void CInfoFormView::AssertValid() const
{
	CFormView::AssertValid();
}

void CInfoFormView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CInfoFormView message handlers
//初始化列表的标题等。
void CInfoFormView::InitalListCtrl(void)
{
	m_pImageList = new CImageList();
	m_pImageList->Create(17, 17, ILC_COLOR, 1, 1);
	CBitmap bitmap;
	bitmap.LoadBitmap(IDB_BITMAP_TAN);
	m_pImageList->Add(&bitmap, (COLORREF)0x000000);
	bitmap.DeleteObject();
	bitmap.LoadBitmap(IDB_BITMAP_WENHAO);
	m_pImageList->Add(&bitmap, (COLORREF)0x000000);
	bitmap.DeleteObject();
	m_info.SetImageList(m_pImageList,LVSIL_SMALL);
	//插入标题
	CRect rect;
	m_info.DeleteAllItems();
	m_info.GetClientRect(&rect);
	int cx = rect.Width() * 1/2;
	m_info.InsertColumn(0, "日期/时间", LVCFMT_LEFT,cx,0);
	m_info.InsertColumn(1, "事件信息", LVCFMT_LEFT,m_nFullWidth-cx,1);
}


//将信息显示到列表
void CInfoFormView::ShowInfoToList(ImageEnum imageStyle,CString strTime,CString strInfo)
{
	int maxitem = m_info.GetItemCount();
	LVITEM lvitem;
	lvitem.mask = LVIF_TEXT|LVIF_IMAGE;
	lvitem.iItem = maxitem ;
	lvitem.iSubItem = 0;
	lvitem.iImage = (imageStyle==GANTANHAO?0:1);
	lvitem.pszText = strTime.GetBuffer(strTime.GetLength());
	m_info.InsertItem(&lvitem); // insert new item*/
	//m_info.InsertItem(index,strInfo,imageStyle==GANTANHAO?0:1);
	lvitem.mask = LVIF_TEXT;
	lvitem.iItem = maxitem ;
	lvitem.iSubItem = 1;
	lvitem.pszText = strInfo.GetBuffer(strInfo.GetLength());
	m_info.SetItem(&lvitem); // insert new item*/
	//最多30个
	m_info.EnsureVisible(maxitem,TRUE);//将最后一个显示出来
	if( maxitem>=30 )
	{
		m_info.DeleteItem(0);
		m_info.EnsureVisible(maxitem-1,TRUE);//将最后一个显示出来
	}
}


//将信息显示到列表
void CInfoFormView::ShowInfoToList(ImageEnum imageStyle,int num,CString strInfo)
{
	CTime ct;
	CString strTime;
	ct = CTime::GetCurrentTime();
	strTime.Format("%d.%d.%d  %d:%d:%d",ct.GetYear(),ct.GetMonth(),ct.GetDay(),
		        ct.GetHour(),ct.GetMinute(),ct.GetDay());
	int maxitem = m_info.GetItemCount();
	LVITEM lvitem;
	lvitem.mask = LVIF_TEXT|LVIF_IMAGE;
	lvitem.iItem = maxitem ;
	lvitem.iSubItem = 0;
	lvitem.iImage = (imageStyle==GANTANHAO?0:1);
	lvitem.pszText = strTime.GetBuffer(strTime.GetLength());
	m_info.InsertItem(&lvitem); // insert new item*/
	//m_info.InsertItem(index,strInfo,imageStyle==GANTANHAO?0:1);
	lvitem.mask = LVIF_TEXT;
	lvitem.iItem = maxitem ;
	lvitem.iSubItem = 1;
	lvitem.pszText = strInfo.GetBuffer(strInfo.GetLength());
	m_info.SetItem(&lvitem); // insert new item*/
	//最多30个
	m_info.EnsureVisible(maxitem,TRUE);//将最后一个显示出来
	if( maxitem>=30 )
	{
		m_info.DeleteItem(0);
		m_info.EnsureVisible(maxitem-1,TRUE);//将最后一个显示出来
	}
}

int CInfoFormView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	m_nFullWidth = GetSystemMetrics(SM_CXSCREEN);
	m_nFullHeight = GetSystemMetrics(SM_CYSCREEN );
	return 0;
}

void CInfoFormView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);

	CFormView::ShowScrollBar(SB_VERT,FALSE);
	CFormView::ShowScrollBar(SB_HORZ,FALSE);

	if (GetSafeHwnd())
	{
		if (m_info.GetSafeHwnd())
		{
			//CRect rect(0,0,m_nFullWidth,m_nFullHeight);
			CRect rect(0,0,cx,cy);
			m_info.MoveWindow(&rect);
		}
	}	
}

void CInfoFormView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();

	//装入图标,并初始化列标题
	InitalListCtrl();
	CTime ct;
	CString strInfo;
	ct = CTime::GetCurrentTime();
	strInfo.Format("%d.%d.%d  %d:%d:%d",ct.GetYear(),ct.GetMonth(),ct.GetDay(),
		        ct.GetHour(),ct.GetMinute(),ct.GetDay());
	ShowInfoToList(GANTANHAO,strInfo,"启动OPC服务检测软件");
}

//暂时没用到。
//滚动到最后一个,并删除超过20个的部分
void CInfoFormView::ScrollListToLast(void)
{
	CRect rect;
	m_info.GetClientRect(&rect);
}



⌨️ 快捷键说明

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