CStringArray Head;
CByteArray Cols;
Head.Add("Item");
Cols.Add(40); //40%
Head.Add("Sub1");
Cols.Add(30); //70%
Head.Add("Sub2");
Cols.Add(30); //100%
m_ColListCtrl.InitCtrl(&Head, &Cols);//添加标题头/////添加内容
CString Linetitle;
int pos=0;
for (int x=0; x<10;x++)
{
Head.RemoveAll();
Linetitle.Format("Line %d",x);
Head.Add(Linetitle);
Linetitle.Format("SubLine %d-1",x);
Head.Add(Linetitle);
Linetitle.Format("SubLine %d-2",x);
Head.Add(Linetitle);
pos=m_ColListCtrl.AddItem(&Head,x);
} LOGFONT logfont;//最好弄成类成员,全局变量,静态成员
CFont *pfont = m_ColListCtrl.GetFont();
pfont->GetLogFont( &logfont );
logfont.lfHeight =logfont.lfHeight * 5;
logfont.lfWidth = logfont.lfWidth * 5;
CFont font;
font.CreateFontIndirect(&logfont);
m_ColListCtrl.SetFont(&font);
return TRUE; // return TRUE unless you set the focus to a control
上面这一段是list control的界面初始化,其中标题的字体可以改变,但是添加的内容(10条)却没有改变,请问各位,是不是内容的字体大小不能改变,还是程序本身有什么问题?
CByteArray Cols;
Head.Add("Item");
Cols.Add(40); //40%
Head.Add("Sub1");
Cols.Add(30); //70%
Head.Add("Sub2");
Cols.Add(30); //100%
m_ColListCtrl.InitCtrl(&Head, &Cols);//添加标题头/////添加内容
CString Linetitle;
int pos=0;
for (int x=0; x<10;x++)
{
Head.RemoveAll();
Linetitle.Format("Line %d",x);
Head.Add(Linetitle);
Linetitle.Format("SubLine %d-1",x);
Head.Add(Linetitle);
Linetitle.Format("SubLine %d-2",x);
Head.Add(Linetitle);
pos=m_ColListCtrl.AddItem(&Head,x);
} LOGFONT logfont;//最好弄成类成员,全局变量,静态成员
CFont *pfont = m_ColListCtrl.GetFont();
pfont->GetLogFont( &logfont );
logfont.lfHeight =logfont.lfHeight * 5;
logfont.lfWidth = logfont.lfWidth * 5;
CFont font;
font.CreateFontIndirect(&logfont);
m_ColListCtrl.SetFont(&font);
return TRUE; // return TRUE unless you set the focus to a control
上面这一段是list control的界面初始化,其中标题的字体可以改变,但是添加的内容(10条)却没有改变,请问各位,是不是内容的字体大小不能改变,还是程序本身有什么问题?
{
if ( (!phead)||(!pProcent)) return 1;
LV_COLUMN lvc;
int cx=0;
int count = phead->GetSize();
if (count!=m_columnSize) return 2;
if (pProcent->GetSize() != count) return 3;
for (int x=0; x<count; x++) cx+=pProcent->GetAt(x);
if (cx!=100) return 4; CRect rect_listbox; lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
GetWindowRect( rect_listbox );
cx=int((rect_listbox.right-rect_listbox.left)-20); //some Pixel for Scrollbar //set head-columns in ListBox
lvc.iSubItem = 0;
lvc.fmt = LVCFMT_LEFT ;
for (x=0; x<count; x++)
{
lvc.cx = int(cx*pProcent->GetAt(x)/100);
lvc.pszText = (char*)LPCSTR(phead->GetAt(x));
CListCtrl::InsertColumn(x,&lvc);
}
return 0;
}
{
int ret_index=LISTCTRL_ERROR;
if (!line) return ret_index; LV_ITEM lvi;
//set List-properties
lvi.mask = LVIF_TEXT ;
lvi.iSubItem = 0;
lvi.pszText = ""; int count=GetItemCount();
int columns=line->GetSize(); if (m_columnSize!=columns) return ret_index; if (DWORD(pos)<=DWORD(count)) count=pos;
lvi.iItem = count;
//lvi.lParam= count;
lvi.mask = LVIF_TEXT ;
lvi.iSubItem = 0; //refer to no Item
// insert an new line
ret_index=InsertItem(&lvi);
// set item text for additional columns
for (int x=0; x<columns; x++)
{
CListCtrl::SetItemText(count,x,(char*)LPCSTR(line->GetAt(x)) );
}
lvi.mask = LVIF_STATE;
lvi.iSubItem = 1;
lvi.stateMask = 0xFFFFFFFF ;
lvi.state = 0; if (CListCtrl::SetItem(&lvi))
{
CMyLParam *p=new CMyLParam(m_columnSize); //init with: DEF_BACKGROUND, def_text
CListCtrl::SetItemData( ret_index, DWORD(p) );
return ret_index;
}
return LISTCTRL_ERROR;
}
附上具体的两个函数! 希望大家指点一二
font.CreateFontIndirect(&logfont);
m_ColListCtrl.SetFont(&font);
注意这是一个局部变量函数return后这个&font不再有效
所以字体改不了
用
static CFont font;来定义
或者变成员变量
to:goodboyws(深夜不眠者) 我想调整窗口中的字体,间接调整表格中每一栏的高度,你说得对:SetFont对标题有效,对表格中的字体无效说明表格中不是用窗口的字体
请问,表格中的字体及每一栏的高度应该用什么方法改变,谢谢!
font.CreateFontIndirect(&logfont);
m_ColListCtrl.SetFont(&font);
font.Detach(); //加上这个
CFont *pfont1 = m_ColListCtrl.GetFont();
pfont1->GetLogFont( &logfont );
logfont.lfHeight =logfont.lfHeight * 3;
logfont.lfWidth = logfont.lfWidth * 3;
static CFont font1;
font1.CreateFontIndirect(&logfont);
m_ColListCtrl.SetFont(&font1);
font1.Detach(); //注意释放CDC