1. 重载CTabView类,实现CConfBrdView。
class CConfBrdView : public CTabView
2. 添加选项卡
void CConfBrdView::OnInitialUpdate() //重载OnInitialUpdate函数
{
CTabView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//创建选项卡
AddView(RUNTIME_CLASS(CBCAudioView), _T("音频"), 103); //该选项卡为一个CBCAudioView试图
....
this -> GetTabControl().ModifyTabStyle( CMFCTabCtrl::STYLE_3D_VS2005); //风格
this -> GetTabControl().SetTabBorderSize( 2 ); //边框大小
this -> GetTabControl().HideSingleTab( TRUE ); //单个Tab时候不显示Tab标签
this -> GetTabControl().EnableTabSwap( FALSE ); //禁止拖动
}
2. CBCAudioView视图
CBCAudioView视图继承自CListView, 用以显示一个表格. (class CBCAudioView : public CListView;)
视图界面的初始化:
BOOL CBCAudioView::PreCreateWindow(CREATESTRUCT& cs) //重载
{
// TODO: 在此添加专用代码和/或调用基类
cs.style |= LVS_SHOWSELALWAYS | LVS_REPORT; //设置report风格
return CListView::PreCreateWindow(cs);
}
void CBCAudioView::OnInitialUpdate() //重载
{
//获取列表控件
LONG lStyle;
lStyle = GetWindowLong(listCtrl.m_hWnd, GWL_STYLE); //获取当前窗口style
lStyle &= ~LVS_TYPEMASK; //清除显示方式位
lStyle |= LVS_REPORT; //设置style
SetWindowLong(listCtrl.m_hWnd, GWL_STYLE, lStyle); //设置style
DWORD dwStyle = listCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES; //网格线(只适用与report风格的listctrl)
//dwStyle |= LVS_EX_CHECKBOXES; //item前生成checkbox控件
listCtrl.SetExtendedStyle(dwStyle); //设置扩展风格
CRect rect;
GetClientRect(rect);
//添加两列表头
LV_COLUMN lvcolumn;
lvcolumn.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcolumn.fmt=LVCFMT_LEFT;
lvcolumn.cx=rect.Width()/2;
lvcolumn.iSubItem=0;
lvcolumn.pszText=_T("配置项");
listCtrl.InsertColumn(0,&lvcolumn);
lvcolumn.iSubItem=1;
lvcolumn.pszText=_T("值");
listCtrl.InsertColumn(1,&lvcolumn);
}
3. 重载OnUpdate函数显示数据
CView *pView = GetActiveView();
if (!pView->IsKindOf(RUNTIME_CLASS( CBCAudioView )))
{
return;
}
CListCtrl& listCtrl = ((CBCDevInfoView *)pView)->GetListCtrl();// 获取列表的控件
listCtrl.SetItemText(0, 1, string);