Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MFC 自定义CListCtrl

MFC 自定义CListCtrl

作者头像
全栈程序员站长
发布于 2022-09-09 13:00:24
发布于 2022-09-09 13:00:24
80400
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

本文的代码也是根据网上现有的改编而来

首先是.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#pragma once
#include "HeaderCtrlCl.h"
// CListCtrlCl

class CListCtrlCl : public CListCtrl
{
    DECLARE_DYNAMIC(CListCtrlCl)

public:
    CHeaderCtrlCl m_Header;
    CListCtrlCl();
    virtual ~CListCtrlCl();

protected:
    DECLARE_MESSAGE_MAP()
    virtual void PreSubclassWindow();
public:
    virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
public:
    afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
    void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point){}
    afx_msg void OnRButtonDown(UINT nFlags, CPoint point){}
public:
    // 行高
    int m_nRowHeight;
    int InsertColumn(int nCol, LPCTSTR lpszColumnHeading,
        int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
public:
    // Gradient - 渐变系数,立体背景用,不用渐变设为0
    void SetHeaderBKColor(int R, int G, int B, int Gradient);
public:
    // 设置表头高度
    void SetHeaderHeight(float Height);
    CPtrList m_ptrListCol;  //保存列颜色
    CPtrList m_ptrListItem; //保存Item颜色表
    CPtrList m_colTextColor; //保存列字体颜色
    CPtrList m_ItemTextColor; //保存单元格字体颜色
    CPtrList m_ItemFontSize;//保存单元格字体

    bool FindColColor(int col ,COLORREF &color); //查找列颜色
    bool FindItemColor(int col,int row,COLORREF &color);
    bool FindColTextColor(int col,COLORREF &color); //查找列字体颜色
    bool FindItemTextColor(int col,int row,COLORREF &color);
    bool FindItemFontSize(int col,int row,int &height,int &width);//查找字体大小

    void SetColColor(int col,COLORREF color);  //设置列颜色
    void SetItemColor(int col,int row,COLORREF color); //设置Item颜色
    void SetColTextColor(int col,COLORREF color);   //设置列文本颜色
    void SetItemTextColor(int col,int row,COLORREF color);
    void SetRowHeigt(int nHeight); //设置行高
    void SetHeaderFontHW(int nHeight,int nWith); //设置表头字体大小
    void SetHeaderTextColor(COLORREF color);
    COLORREF m_color;
    BOOL SetTextColor(COLORREF cr);
    void SetFontHW(int nHeight,int nWith);  //设置字体的高和宽

    void SetItemFontHW(int col,int row,int nHeight,int nWidth);
public:
    // 字体高度
    int m_fontHeight;
public:
    // 字体宽度
    int m_fontWith;
};

分割线


.cpp如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "stdafx.h"
#include "ListCtrlCl.h"

struct stColor
{
    int nRow;
    int nCol;
    COLORREF rgb;
};

struct stFont
{
    int nRow;
    int nCol;
    int nFontWidth;
    int nFontHeight;
};
// CListCtrlCl

IMPLEMENT_DYNAMIC(CListCtrlCl, CListCtrl)

CListCtrlCl::CListCtrlCl()
: m_nRowHeight(0)
, m_fontHeight(12)
, m_fontWith(0)
{
    m_color = RGB(0,0,0);
}

CListCtrlCl::~CListCtrlCl()
{
}


BEGIN_MESSAGE_MAP(CListCtrlCl, CListCtrl)
    ON_WM_MEASUREITEM()
    ON_WM_MEASUREITEM_REFLECT()
    ON_WM_LBUTTONDOWN()
    ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()



// CListCtrlCl 消息处理程序



void CListCtrlCl::PreSubclassWindow()
{
    // TODO: 在此添加专用代码和/或调用基类
    ModifyStyle(0,LVS_OWNERDRAWFIXED);
    CListCtrl::PreSubclassWindow();
    CHeaderCtrl *pHeader = GetHeaderCtrl();
    m_Header.SubclassWindow(pHeader->GetSafeHwnd());
}

void CListCtrlCl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{

    // TODO: 添加您的代码以绘制指定项
    TCHAR lpBuffer[256];

    LV_ITEM lvi;

    lvi.mask = LVIF_TEXT | LVIF_PARAM ;
    lvi.iItem = lpDrawItemStruct->itemID ; 
    lvi.iSubItem = 0;
    lvi.pszText = lpBuffer ;
    lvi.cchTextMax = sizeof(lpBuffer);
    VERIFY(GetItem(&lvi));

    LV_COLUMN lvc, lvcprev ;
    ::ZeroMemory(&lvc, sizeof(lvc));
    ::ZeroMemory(&lvcprev, sizeof(lvcprev));
    lvc.mask = LVCF_WIDTH | LVCF_FMT;
    lvcprev.mask = LVCF_WIDTH | LVCF_FMT;

    CDC* pDC;
    pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect rtClient;
    GetClientRect(&rtClient);
    for ( int nCol=0; GetColumn(nCol, &lvc); nCol++)
    {
        if ( nCol > 0 ) 
        {
            // Get Previous Column Width in order to move the next display item
            GetColumn(nCol-1, &lvcprev) ;
            lpDrawItemStruct->rcItem.left += lvcprev.cx ;
            lpDrawItemStruct->rcItem.right += lpDrawItemStruct->rcItem.left; 
        }

        CRect rcItem;   
        if (!GetSubItemRect(lpDrawItemStruct->itemID,nCol,LVIR_LABEL,rcItem))   
            continue;   

        ::ZeroMemory(&lvi, sizeof(lvi));
        lvi.iItem = lpDrawItemStruct->itemID;
        lvi.mask = LVIF_TEXT | LVIF_PARAM;
        lvi.iSubItem = nCol;
        lvi.pszText = lpBuffer;
        lvi.cchTextMax = sizeof(lpBuffer);
        VERIFY(GetItem(&lvi));
        CRect rcTemp;
        rcTemp = rcItem;

        if (nCol==0)
        {
            rcTemp.left -=2;
        }

        if ( lpDrawItemStruct->itemState & ODS_SELECTED )
        {
            pDC->FillSolidRect(&rcTemp, GetSysColor(COLOR_HIGHLIGHT)) ;
            pDC->SetTextColor(GetSysColor(COLOR_HIGHLIGHTTEXT)) ;
        }
        else
        {
            COLORREF color;
            color = GetBkColor();
            pDC->FillSolidRect(rcTemp,color);

            if (FindColColor(nCol,color))
            {
                pDC->FillSolidRect(rcTemp,color);
            }
            if (FindItemColor(nCol,lpDrawItemStruct->itemID,color))
            {
                pDC->FillSolidRect(rcTemp,color);
            }

            //pDC->SetTextColor(m_color);
        }

        pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));

        UINT   uFormat    = DT_CENTER ;
        if (m_Header.m_Format[nCol]=='0')
        {
            uFormat = DT_LEFT;
        }
        else if (m_Header.m_Format[nCol]=='1')
        {
            uFormat = DT_CENTER;
        }
        else if (m_Header.m_Format[nCol]=='2')
        {
            uFormat = DT_RIGHT;
        }

        pDC->SetTextColor(m_color);
        COLORREF color;
        if (FindColTextColor(nCol,color))
        {
            pDC->SetTextColor(color);
        }
        if (FindItemTextColor(nCol,lpDrawItemStruct->itemID,color))
        {
            pDC->SetTextColor(color);
        }

        CFont nFont ,* nOldFont; 
        int fontheight, fontwidth;
        if(FindItemFontSize(nCol,lpDrawItemStruct->itemID,fontheight,fontwidth))
        {
            nFont.CreateFont(fontheight,fontwidth,0,0,0,FALSE,FALSE,0,0,0,0,0,0,_TEXT("宋体"));//创建字体 
            nOldFont = pDC->SelectObject(&nFont);

            int ofst;
            ofst = rcItem.Height() - fontheight;
            rcItem.OffsetRect(0,ofst/2);//居中显示
        }
        else
        {
            nFont.CreateFont(m_fontHeight,m_fontWith,0,0,0,FALSE,FALSE,0,0,0,0,0,0,_TEXT("宋体"));//创建字体 
            nOldFont = pDC->SelectObject(&nFont);

            TEXTMETRIC metric;
            metric.tmHeight;
            pDC->GetTextMetrics(&metric);
            int ofst;
            ofst = rcItem.Height() - metric.tmHeight;
            rcItem.OffsetRect(0,ofst/2);//居中显示
        }
        DrawText(lpDrawItemStruct->hDC, lpBuffer, strlen(lpBuffer), &rcItem, uFormat) ;
        DeleteObject(&nFont);
        pDC->SelectStockObject(SYSTEM_FONT) ;
    }

}

void CListCtrlCl::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    CListCtrl::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
void CListCtrlCl::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
    if (m_nRowHeight>0)
    {
        lpMeasureItemStruct->itemHeight = m_nRowHeight;
    }
}
int CListCtrlCl::InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat /* = LVCFMT_LEFT */, int nWidth /* = -1 */, int nSubItem /* = -1 */)
{
    m_Header.m_HChar.Add(lpszColumnHeading);
    if (nFormat==LVCFMT_LEFT)
    {
        m_Header.m_Format = m_Header.m_Format + "0";
    }
    else if (nFormat==LVCFMT_CENTER)
    {
        m_Header.m_Format = m_Header.m_Format + "1";
    }
    else if (nFormat==LVCFMT_RIGHT)
    {
        m_Header.m_Format = m_Header.m_Format + "2";
    }
    else
    {
        m_Header.m_Format = m_Header.m_Format + "1";
    }
    return CListCtrl::InsertColumn(nCol,lpszColumnHeading,nFormat,nWidth,nSubItem);
}
// Gradient - 渐变系数,立体背景用,不用渐变设为0
void CListCtrlCl::SetHeaderBKColor(int R, int G, int B, int Gradient) //设置表头背景色
{
    m_Header.m_R = R;
    m_Header.m_G = G;
    m_Header.m_B = B;
    m_Header.m_Gradient = Gradient;
}

// 设置表头高度
void CListCtrlCl::SetHeaderHeight(float Height) //设置表头高度
{
    m_Header.m_Height = Height;
}
bool CListCtrlCl::FindColColor(int col,COLORREF &color) //查找列颜色
{
    int flag = 0;
    for (POSITION pos = m_ptrListCol.GetHeadPosition();pos!=NULL;)
    {
        stColor *pColor = (stColor*)m_ptrListCol.GetNext(pos);
        if (pColor->nCol==col)
        {
            flag = 1;
            color = pColor->rgb;
            break;
        }
    }
    if (1==flag)
    {
        return true;
    }
    return false;
}
bool CListCtrlCl::FindItemColor(int col,int row,COLORREF &color) //查找颜色
{
    int flag = 0;
    for (POSITION pos = m_ptrListItem.GetHeadPosition();pos!=NULL;)
    {
        stColor *pColor = (stColor*)m_ptrListItem.GetNext(pos);
        if (pColor->nCol==col&&pColor->nRow==row)
        {
            flag = 1;
            color = pColor->rgb;
            break;
        }
    }
    if (1==flag)
    {
        return true;
    }
    return false;
}
void CListCtrlCl::SetColColor(int col,COLORREF color) //设置列颜色
{
    stColor *pColor  = new stColor;
    pColor->nCol = col;
    pColor->rgb = color;
    m_ptrListCol.AddTail(pColor);
}
void CListCtrlCl::SetItemColor(int col,int row,COLORREF color) //设置格子颜色
{
    stColor *pColor  = new stColor;
    pColor->nCol = col;
    pColor->nRow = row;
    pColor->rgb = color;
    m_ptrListItem.AddTail(pColor);
}
void CListCtrlCl::SetRowHeigt(int nHeight) //高置行高
{
    m_nRowHeight = nHeight;

    CRect rcWin;
    GetWindowRect(&rcWin);
    WINDOWPOS wp;
    wp.hwnd = m_hWnd;
    wp.cx = rcWin.Width();
    wp.cy = rcWin.Height();
    wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER;
    SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
}
void CListCtrlCl::SetHeaderFontHW(int nHeight,int nWith) //设置头部字体宽和高
{
    m_Header.m_fontHeight = nHeight;
    m_Header.m_fontWith = nWith;
}
void CListCtrlCl::SetHeaderTextColor(COLORREF color) //设置头部字体颜色
{
    m_Header.m_color = color;
}
BOOL CListCtrlCl::SetTextColor(COLORREF cr)  //设置字体颜色
{
    m_color = cr;
    return TRUE;
}
void CListCtrlCl::SetFontHW(int nHeight,int nWith) //设置字体高和宽
{
    m_fontHeight = nHeight;
    m_fontWith = nWith;
}
void CListCtrlCl::SetColTextColor(int col,COLORREF color)
{
    stColor *pColor = new stColor;
    pColor->nCol = col;
    pColor->rgb = color;
    m_colTextColor.AddTail(pColor);
}

bool CListCtrlCl::FindColTextColor(int col,COLORREF &color)
{
    int flag = 0;
    for (POSITION pos = m_colTextColor.GetHeadPosition();pos!=NULL;)
    {
        stColor *pColor = (stColor*)m_colTextColor.GetNext(pos);
        if (pColor->nCol==col)
        {
            flag = 1;
            color = pColor->rgb;
            break;
        }
    }
    if (1==flag)
    {
        return true;
    }
    return false;
}

bool CListCtrlCl::FindItemTextColor(int col,int row,COLORREF &color)
{
    int flag = 0;
    for (POSITION pos = m_ItemTextColor.GetHeadPosition();pos!=NULL;)
    {
        stColor *pColor = (stColor*)m_ItemTextColor.GetNext(pos);
        if (pColor->nCol==col&&pColor->nRow==row)
        {
            flag = 1;
            color = pColor->rgb;
            break;
        }
    }
    if (1==flag)
    {
        return true;
    }
    return false;
}

void CListCtrlCl::SetItemTextColor(int col,int row,COLORREF color)
{
    stColor *pColor = new stColor;
    pColor->nCol = col;
    pColor->nRow = row;
    pColor->rgb = color;
    m_ItemTextColor.AddTail(pColor);
}

void CListCtrlCl::SetItemFontHW(int col,int row,int nHeight,int nWidth)
{
    stFont *pFont=new stFont;
    pFont->nCol=col;
    pFont->nRow=row;
    pFont->nFontHeight=nHeight;
    pFont->nFontWidth=nWidth;
    m_ItemFontSize.AddTail(pFont);
}
bool CListCtrlCl::FindItemFontSize(int col,int row,int &height,int &width)
{
    int flag = 0;
    for (POSITION pos = m_ItemFontSize.GetHeadPosition();pos!=NULL;)
    {
        stFont *pFont = (stFont*)m_ItemFontSize.GetNext(pos);
        if (pFont->nCol==col&&pFont->nRow==row)
        {
            flag = 1;
            height=pFont->nFontHeight;
            width = pFont->nFontWidth;
            break;
        }
    }
    if (1==flag)
    {
        return true;
    }
    return false;
}

原理:要明白DrawItem是关键, 即绘每一个项,我们就在这里面搞事!CPtrList 看名字就知道叫指针列表,用来保存要修改的项,如果那项要修改,stFont与stColor就是我们要添加进去的指针,哪里要修改哪里就new一个,再addtail(添加到尾部),再写一个Find方法,某项有无被设置了颜色或者字体等属性,并在DrawItem里调用,找到就设置某项,基本原理即清楚了!附一张效果图:

不得不说还是相当的美观!

下载链接:http://download.csdn.net/detail/what951006/9805027 更多文章:http://blog.csdn.net/what951006?viewmode=list Powered by:小乌龟在大乌龟背上~

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152478.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设置CListCtrl单元格的颜色
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152481.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
1.2K0
CListCtrl自绘「建议收藏」
第一种:使用WM_ERASEBKGND消息 + NM_CUSTOMDRAW消息配合自绘
全栈程序员站长
2022/09/09
1.6K0
CListCtrl自绘「建议收藏」
CListCtrl使用「建议收藏」
列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。 MFC中使用CListCtrl类来封装列表控件的各种操作。 通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID )创建一个窗口,
全栈程序员站长
2022/09/09
1.6K0
CListCtrl控件使用方法总结
今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn ---- 1. CListCtrl 风格       LVS_ICON: 为每个item显示大图标       LVS_SMALLICON: 为每个item显示小图标       LVS_LIST:
_gongluck
2018/03/12
2.1K0
图像处理程序框架—MFC相关知识点
CDC:Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。
流川疯
2019/01/18
1.7K0
CListCtrl
建立变量m_listCtrl: 选中控件ctrl+鼠标左键双击 添加控件风格: DWORD exstyle = m_ListCtrl.GetExtendedStyle(); m_ListCtrl.SetExtendedStyle(exstyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | WS_EX_STATICEDGE ); m_ListCtrl.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING); 插入列: m_ListCtrl.InsertColumn(0,_T(“文件名”),LVCFMT_LEFT,60,0); int nItemIndex =m_ListCtrl.InsertItem(j,sServerTmp);//主项目 m_ListCtrl.SetItemText(nItemIndex,nCol+1,sTmp);//次 cstrItemB = m_ListCtrl.GetItemText(行, 列);//获取
全栈程序员站长
2022/09/09
8090
VC++6.0入门——第五讲 文本编程
文章链接:https://cloud.tencent.com/developer/article/2465870
Arya
2024/11/18
2480
VC++6.0入门——第五讲 文本编程
MFC的自定义控件之控件封装
MFC实现CListBox的继承实现自定义效果 目标 - 实现有背景颜色项的列表 思路 需要知道CListBox的每个item的绘制方法 需要知道CListBox的item的测量方法 查看源码找到关键的量重写的方法: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); 开始实现 自定义控件的操作步骤
包子388321
2020/06/16
1.9K0
ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)
1 怎样隐藏ListCtrl列表头的排序小三角形 在创建控件是加入|LVS_NOSORTHEADER风格即可。 一下是用法总结: 本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、
用户1198337
2018/01/19
3.3K0
ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)
CListCtrl详细使用方法
以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn
全栈程序员站长
2022/09/09
1.4K0
图像处理代码的一些思考
{m_DC.FillSolidRect(0,0,m_Width,m_Height,clr);}
流川疯
2019/01/18
6150
窗口分割
我们在使用OutLook或者NetAnt等工具的时候,一般都会被其复杂的界面所吸引,在这些界面中窗口被分割为若干的区域,真正做到了窗口的任意分割。 那么我们自己如何创建类似的界面,也实现窗口的任意的分割呢?要解决这个问题,在Visual C++6.0编程中就需要使用到MFC提供的CSplitterWnd类。CSplitterWnd看上去像是一种特殊的框架窗口,每个窗口都被相同的或者不同的视图所填充。当窗口被切分后用户可以使用鼠标移动切分条来调整窗口的相对尺寸。虽然VC6.0支持从AppWizard中创建分割窗口,但是自动加入的分割条总是不能让我们满意,因此我们还是通过手工增加代码来熟悉这个类。本实例采用多模板模式,即实现了窗口的任意分割,又介绍了各个视图如何相互通信。程序编译运行后的界面效果如图一所示:
全栈程序员站长
2022/07/18
8990
VC++6.0中改变窗口背景颜色和控件背景颜色,CDC,我的感觉
1.改变对话框的背景色 在C…App类中的InitInstance()里添加 SetDialogBkColor(RGB(0,192,0),RGB(0,0,0)); 2.如果想改变静态文本或单选按钮的背景色可以用你说的那个获得控件ID,然后设置背景色,具体步骤: (1)响应对话框类的WM_CTLCOLOR消息生成OnCtlColor函数 (2)为对话框类添加成员变量CBrush m_brush; 并在初始化函数中初始化m_brush.CreateSolidBrush(RGB(0,255,0)); (3)在OnCtlColor函数中添加代码以改变控件的文字颜色和背景色 switch(pWnd->GetDlgCtrlID()) { case(IDC_INPUT):   pDC->SetTextColor(RGB(255,0,192));   pDC->SetBkMode(TRANSPARENT);   return m_brush;   break; case(IDC_EDIT1):   pDC->SetTextColor(RGB(255,0,0));   pDC->SetBkMode(TRANSPARENT);   return m_brush;   break; case(IDC_CHOICE):   pDC->SetTextColor(RGB(255,128,0));   pDC->SetBkMode(TRANSPARENT);   return m_brush;   break; case(IDC_RADIO1):   pDC->SetTextColor(RGB(255,0,20));   pDC->SetBkMode(TRANSPARENT);   return m_brush;   break; default:   break; } 3.如果想改变按钮的背景色,简直太难了,你要重写两个类,还需要在网上下,孙鑫的视频教程中也简单介绍了这个,可只是改变按钮的文字颜色
阳光岛主
2019/02/19
4K0
CTreeCtrl自绘
用户3519280
2023/09/13
4740
OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计
原文链接:https://www.cnblogs.com/DOMLX/p/12111102.html
徐飞机
2019/12/31
1.5K0
【大三操作系统实验】 请求页式管理中的置换算法
(1)FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。FIFO算法认为调入内存的页不再被可能性要比其他页大,因而选择最先调入内存的页换出。
用户7886150
2020/12/29
6100
VC编程常见问题解答收集贴
1.使用ModifyStyleEx改变了控件风格无效 答:修改之后,重绘一次,如果还不行的话,再试试看调用SetWindowPos(0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);
全栈程序员站长
2022/09/09
1.9K0
OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中
OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Control 控件中。为此,网上非常多人表示仅仅要将那两个文件人为的提取出来然后放到project里面就解决这个问题了,也提供了两个文件的下载,可是这麻烦不说。还会导致一些奇奇怪怪的报错(至少本人是这种,非常崩溃!)。所以在了解了一些gdi画图之后结合网上的代码写了例如以下的函数,仅仅需调用就能够将OpenCV的图片显示在上面了(仅仅支持三通道不支持单通道),初步測试效率跟原来两个文件差点儿相同。假设有大神请帮我完好这份代码!
全栈程序员站长
2022/07/10
6670
c++ MFC图像处理CImage类常用操作代码
原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html
徐飞机
2018/09/30
5.4K0
ArcEnbine开发之添加标注
界面比较丑陋,主要控件为: 四个combox,三个textbox和两个按钮,属性值设置在此不详述,还望见谅…… 下面看看实现代码:
牛老师讲GIS
2018/10/23
6430
相关推荐
设置CListCtrl单元格的颜色
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验