MFC 手动添加自会Listcontrl

Posted guo-xin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 手动添加自会Listcontrl相关的知识,希望对你有一定的参考价值。

1.在工具箱中拖拽一个list控件,更改View属性为Report得到如下图所示控件。

技术图片

 

 

 2.右键控件->添加变量->变量类型为CListCtrl。变量名根据需求自己定义。如下:

技术图片

 

3.在工程的消息函数添加:

DDX_Control(pDX, 控件ID, 变量名);

4.在初始化或者需要listcontrl控件的代码处添加控件的初始化代码段,为了安全建议list第一行第一列不要放任何元素。以下使本人代码,仅供参考。

变量名.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 整行选择、网格线
    变量名.InsertColumn(0, _T(""), LVCFMT_CENTER, 0);
    变量名.InsertColumn(1, _T("巡检记录"), LVCFMT_CENTER, m_rectlist_video.Width() / 8); // 插入第2列的列名

5.为进一步美化list控件 在BEGIN_MESSAGE_MAP 处添加如下自定义函数:

ON_NOTIFY(NM_CUSTOMDRAW, 控件ID, OnCustomdrawListerr)

别忘了在工程对应的.h文件中添加

afx_msg void OnCustomdrawListerr(NMHDR*, LRESULT*);

之后就可以按照自己需求重写OnCustomdrawListerr函数:

void video::OnCustomdrawListerr(NMHDR *pNMHDR, LRESULT *pResult)
{

    NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
    *pResult = 0;

    //指定列表项绘制前后发送消息   
    if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
    {
       ***********
    }
    else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
    {
        *****************
       ********************
    }
}

因保密等问题这里不好放源代码,如有疑问或者需要代码。可以留言,交流思路。

技术图片

 

 

个人经验总结,如有错误或者侵犯到您个人的利益,请留言与我联系。

以上是关于MFC 手动添加自会Listcontrl的主要内容,如果未能解决你的问题,请参考以下文章

027.MFC_映射消息

手动设置片段的屏幕方向

MFC控件编程之鼠标消息

猎豹MFC--消息映射

Android YouTube Player API Fragment无法手动处理触摸事件

如何将 MFC 支持添加到现有的 Win32 C++ 项目?