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

📄 sysinfolist.cpp

📁 开发一套易用的网络通信包
💻 CPP
字号:
// SysInfoList.cpp : implementation file
//

#include "stdafx.h"
#include "serverWGUI.h"
#include "SysInfoList.h"

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

using namespace commIPC;
using namespace spBase;

/////////////////////////////////////////////////////////////////////////////
// CSysInfoList

CSysInfoList::CSysInfoList()
{
}

CSysInfoList::~CSysInfoList()
{
}


BEGIN_MESSAGE_MAP(CSysInfoList, CListCtrl)
	//{{AFX_MSG_MAP(CSysInfoList)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSysInfoList message handlers

void CSysInfoList::PreSubclassWindow() 
{
	CListCtrl::PreSubclassWindow();

	//设置控件的特性
	DWORD dwStyle = GetWindowLong(GetSafeHwnd(),GWL_STYLE);
	dwStyle=(dwStyle& ~LVS_TYPEMASK)|WS_CHILD | LVS_REPORT;//|LVS_NOCOLUMNHEADER;
	SetWindowLong(GetSafeHwnd(),GWL_STYLE,dwStyle);

	InitListCtrlCols();
	InitImageList();

	DeleteAllItems();
	
}

void CSysInfoList::InitListCtrlCols(void)
{
	//插入三列:0:信息类型,1:产生时间,2:信息内容
	CRect rect;
	GetClientRect(&rect);
	int nColInterval = rect.Width()/100;

	InsertColumn(0, _T("消息类型"), LVCFMT_LEFT, nColInterval*15);
	InsertColumn(1, _T("时间"), LVCFMT_LEFT, nColInterval*26);
	InsertColumn(2, _T("消息内容"), LVCFMT_LEFT, rect.Width()-41*nColInterval);

}

void CSysInfoList::InitImageList(void)
{
	//设置listctrl 的图标
	// Create 256 color image lists
	HIMAGELIST 	hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1);
	m_cImageListSmall.Attach(hList);
	// Load the large icons
	CBitmap cBmp;
	cBmp.LoadBitmap(IDB_BMP_MSG_STATUS);
	m_cImageListSmall.Add(&cBmp, RGB(255,0, 255));
	cBmp.DeleteObject();
	SetImageList(&m_cImageListSmall, LVSIL_SMALL);
}

void CSysInfoList::DisplayMsg(int eLevel,LPCTSTR szDisplay)
{
	// 使用 lvitem 插入数据
	LVITEM lvi;
	CString strItem;
	char szMsgType[20];
	COutputDisplay::GetErrorLevelString ((COutputDisplay::ErrorLevel)eLevel,szMsgType);
	int iItemCount=GetItemCount();
	if(iItemCount>1000) DeleteAllItems();
	//int iLevel=eLevel;
	//插入的一项
	lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
	strItem.Format(szMsgType);
	
	lvi.iItem = iItemCount;
	lvi.iSubItem = 0;
	lvi.pszText = szMsgType;//(LPTSTR)(LPCTSTR)(strItem);
	lvi.iImage = eLevel;
	InsertItem(&lvi);
	
	//设置第一项
	strItem.Format(_T("%s"), CTime::GetCurrentTime().Format(_T("%Y/%m/%d %H:%M:%S")));
	lvi.iSubItem =1;
	lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
	SetItem(&lvi);
	
	//设置第一项
	lvi.iSubItem =2;
	lvi.pszText = (LPTSTR)szDisplay;
	SetItem(&lvi);
	CSize size(-10,40);		
	Scroll(size);
}

⌨️ 快捷键说明

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