MFC 中改变List Control控件字体的大小及清空文本的方式

MFC 中改变List Control控件字体的大小

LOGFONT logfont;//最好弄成类成员,全局变量,静态成员
CFont *pfont1 = m_List.GetFont();
pfont1->GetLogFont( &logfont );
logfont.lfHeight =logfont.lfHeight * 3; //这里可以修改字体的高比例
logfont.lfWidth = logfont.lfWidth * 3; //这里可以修改字体的宽比例
static CFont font1;
font1.CreateFontIndirect(&logfont);
m_List.SetFont(&font1);
font1.Detach();

把这一段放在OnInitDialog()就OK了

MFC 中清空List Control控件的文本方法
M_list为我的控件变量
以下两种方法: 仅能清空行数据,而列的标题是没办法清空的,所以得进一步清空列。(在此不做叙述)
方法一:
m_list.DeleteAllItems();

        int ncount = m_list.GetHeaderCtrl()->GetItemCount(); //获取控件中的列表数量
     	for (size_t i = 0; i < ncount; ++i)
     	{
	    	m_list.DeleteColumn(i);
	    }
    	//删除每一个列

是不是看起来很简单?但很遗憾,这这种方式在高版本VS中是有错误的(本人使用的是VS2019)。

高版本的MFC框架中,DeleteColumn()删除索引下的列后,会自动将往后的列项往前移
这就造成了循环结束后仍会剩余一个列没删除,这样当界面多次界面切换会,最后一个列项就会多出一个。所以得使用

      while (m_list.DeleteColumn(0));   //删除第一项,删了之后后面的会前移

方法二:

     m_list.DeleteAllItems(); // 全部清空

猜你喜欢

转载自blog.csdn.net/qq_45780653/article/details/106997152