List Control用法
1.调用CListCtrl的 InsertColumn无效的解决方法
想编一个列表的MFC程序,可在调用InsertColumn时却出了问题:列表控件没有反应。
上网查资料,得到了答案,那就是要把它的Style指定为LVS_REPORT。或者在控件属性中设置
具体做法如下:
假设你的Dialog中有: CListCtrl m_listctrl; 在你调用InsertColumn之前,先要输入如下的代码: LONG styles;styles=GetWindowLong(m_listctrl.m_hWnd,GWL_STYLE);
SetWindowLong(m_listctrl.m_hWnd,GWL_STYLE,styles | LVS_REPORT); 这样才能有效。
BOOL Pic2VideoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
DWORD exstyle = m_ClistCtrl.GetExtendedStyle();
m_ClistCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_CHECKBOXES | WS_EX_STATICEDGE );//添加CheckBox
CRect rect;
m_ClistCtrl.GetClientRect(&rect);
int nColInterval = rect.Width()/5;//将宽分为5等分
m_ClistCtrl.InsertColumn(0, _T("ID"), LVCFMT_LEFT, nColInterval*1.5);//第一列 1.5等分
m_ClistCtrl.InsertColumn(1, _T("文件名"), LVCFMT_LEFT, nColInterval*3.5);//第二列 3.5等分
m_ClistCtrl.InsertItem(nCount,strTemp);//插入第nCount行
m_ClistCtrl.SetItemText(nCount,1,strFileShow);//插入第nCount行文本,第一列(实际是第二列)
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
3.单击某一行消息响应.
添加NM_CLICK消息响应
ON_NOTIFY(NM_CLICK, IDC_ListFile, &CPic2VideoDlg::OnNMClickListfile)

浙公网安备 33010602011771号