icesord 2023-08-16 20:22 采纳率: 0%
浏览 5

MFC_ListCtrl垂直居中

MFC的ListCtrl控件(报表视图),如何使内容垂直居中(不是水平居中)显示?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-16 22:04
    关注

    【以下回答由 GPT 生成】

    在MFC的ListCtrl控件中实现垂直居中显示内容的方法如下:

    1. 给ListCtrl控件添加响应NM_CUSTOMDRAW消息的函数。
    2. 在该函数中,通过获取绘图DC和相应的绘图矩形,来自定义绘制ListCtrl的单元格。
    3. 在自定义绘制的过程中,使用DrawText函数绘制文本,并使用DT_VCENTER参数来实现垂直居中显示。

    以下是一个示例代码:

    void CMyListView::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
    {
        NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
        *pResult = CDRF_DODEFAULT;
    
        if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
        {
            *pResult = CDRF_NOTIFYITEMDRAW;
        }
        else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
        {
            *pResult = CDRF_NOTIFYSUBITEMDRAW;
        }
        else if (CDDS_SUBITEM | CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
        {
            // 获取绘图DC和绘图矩形
            CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
            CRect rect;
            m_listCtrl.GetSubItemRect(pLVCD->nmcd.dwItemSpec, pLVCD->iSubItem, LVIR_LABEL, rect);
    
            // 获取文本
            LVITEM lvItem;
            lvItem.iItem = pLVCD->nmcd.dwItemSpec;
            lvItem.iSubItem = pLVCD->iSubItem;
            lvItem.mask = LVIF_TEXT;
            CString strText;
            m_listCtrl.GetItem(&lvItem);
            strText = lvItem.pszText;
    
            // 绘制垂直居中文本
            pDC->SetTextColor(RGB(0, 0, 0));
            pDC->SetBkMode(TRANSPARENT);
            pDC->DrawText(strText, rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
    
            *pResult = CDRF_SKIPDEFAULT;
        }
    }
    

    在对应的消息映射中添加响应函数:

    ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_CTRL, &CMyListView::OnCustomDraw)
    

    这样,在使用MFC的ListCtrl控件时,就可以实现垂直居中显示内容的效果了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月16日

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 被蓝屏搞吐了,有偿求帮解答,Ai回复直接拉黑
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并