C++中有一个CFormView类,我们可以从这个类派生出不同的视图类,将其与各种控件关联起来,就能实现各个视图显示和编辑不同控件的效果了。
以下举例列表控件的实例:
//AlarmView.h : header file
//CAlarmView form view
#ifndef __AFXEXT_H__
#include <afxext.h>
#endif
#include "resource.h"
#include "MyList.h"
class CAlarmView : public CFormView
{
protected:
CAlarmView(); //protected constructor used by dynamic creation
DECLARE_DYNCREATE(CAlarmView)
// Form Data
public:
enum { IDD= IDD_DIA_ALARM };
CMyList m_alarmlist;
//Attributes
public:
virtual voidOnInitialUpdate();
protected:
virtual voidDoDataExchange(CDataExchange*pDX); // DDX/DDV support
//Implementation
protected:
virtual ~CAlarmView();
#ifdef _DEBUG
virtual voidAssertValid() const;
virtual voidDump(CDumpContext&dc) const;
#endif
afx_msg intOnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msg voidOnSize(UINT nType, int cx, int cy);
DECLARE_MESSAGE_MAP()
}
#include "stdafx.h"
#include "AlarmView.h"
#include "resource.h"
/
//CAlarmView
IMPLEMENT_DYNCREATE(CAlarmView, CFormView)
CAlarmView::CAlarmView(): CFormView(CAlarmView::IDD)
{
m_nDlgWidth = 0;
m_nDlgHeight = 0;
m_nWidth = 0;
m_nHeight = 0;
m_Multiple_width = 1.0;
m_Mutiple_height = 1.0;
}
CAlarmView::~CAlarmView()
{
}
void CAlarmView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_ALARM,m_alarmlist);
}
BEGIN_MESSAGE_MAP(CAlarmView, CFormView)
ON_WM_CREATE()
ON_WM_SIZE()
END_MESSAGE_MAP()
/
//CAlarmView diagnostics
#ifdef _DEBUG
void CAlarmView::AssertValid() const
{
CFormView::AssertValid();
}
void CAlarmView::Dump(CDumpContext& dc)const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/
//CAlarmView message handlers
void CAlarmView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code hereand/or call the base class
DWORD dwStyle= m_alarmlist.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使其高亮
dwStyle |= LVS_EX_GRIDLINES;//网格线
m_alarmlist.SetExtendedStyle(dwStyle);//设置扩展风格
CRect rect;
m_alarmlist.GetClientRect(&rect);
m_alarmlist.InsertColumn(0,"编号ID",LVCFMT_LEFT,rect.Width()/5);
m_alarmlist.InsertColumn(1,"全名FullName",LVCFMT_LEFT,rect.Width()/5);
m_alarmlist.InsertColumn(2,"时间Time",LVCFMT_LEFT,rect.Width()/5);
m_alarmlist.InsertColumn(3,"描述Desc",LVCFMT_LEFT,rect.Width()/5);
m_alarmlist.InsertColumn(4,"类型Type",LVCFMT_LEFT,rect.Width()/5);
}
此时视图上就会显示已经插入数据的列表控件了!