一.创建List控件
参考:http://blog.sina.com.cn/s/blog_5f30147a0100dzgx.html ()
1.MyView视图类添加CListCtrl对象成员变量
CListCtrl m_List;
2.资源视图中打开String Table资源,在右键菜单中选择new string,为将要创建的ListControl控件添加资源编号:
IDC_LISTCONTROL
3.为创建和显示控件,在视图的初始化消息函数中添加如下代码:
void CMyView::OnInitialUpdate()
CRect Workrect;
GetClientRect(&Workrect);
m_List.Create( LVS_REPORT,Workrect,this,IDC_LISTCONTROL);
m_List.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING);
m_List.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);
m_List.ShowWindow(SW_SHOW);
CRect rect;
m_List.GetClientRect(&rect);
int nColumnWidth = rect.Width()/3;
m_List.InsertColumn(0, _T("Title1"), LVCFMT_LEFT, nColumnWidth);
m_List.InsertColumn(1, _T("Title2"), LVCFMT_LEFT, nColumnWidth);
m_List.InsertColumn(2, _T("Title3"), LVCFMT_LEFT, nColumnWidth);
m_List.InsertItem(0,"name0");
m_List.SetItemText(0,1,"value0_1");
m_List.SetItemText(0,2,"value0_1");
m_List.InsertItem(1,"name1");
m_List.SetItemText(1,1,"value1_1");
m_List.SetItemText(1,2,"value1_1");
}
二.List控件随单文档大小变化而变化
参考:http://blog.csdn.net/k642311153/article/details/7938236
1.首先,在View视图的派生类中添加成员变量m_rect:
CRect m_rect;
2.然后,在相应的cpp文件中的OnInitialUpdate()函数中对m_rect进行初始化:
GetClientRect (&m_rect);
3.接下来,在CMyView类中对消息WM_SIZE进行响应并添加消息处理函数OnSize(),而控件的变化在消息处理函数中进行:
void CMyView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
CWnd *pWnd;
pWnd = GetDlgItem(IDC_LISTCONTROL); //获取控件句柄
if(pWnd)//判断是否为空,
{
CRect rect; //获取控件变化前大小
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);//将控件大小转换为单文档中的区域坐标
rect.left=rect.left*cx/m_rect.Width();/**//调整控件大小
rect.right=rect.right*cx/m_rect.Width();
rect.top=rect.top*cy/m_rect.Height();
rect.bottom=rect.bottom*cy/m_rect.Height();
//这里对List控件的每一列的宽度同时进行了调整:
m_List.SetColumnWidth(0,rect.Width()/3);
m_List.SetColumnWidth(1,rect.Width()/3);
m_List.SetColumnWidth(2,rect.Width()/3);
pWnd->MoveWindow(rect);//设置控件大小
}
GetClientRect(&m_rect);//将变化后的大小设为旧大小
}