首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎样可以在CListCtrl只有16宽度的列中,正确显示了两位数字如"99"解决方案

2012-03-07 
怎样可以在CListCtrl只有16宽度的列中,正确显示了两位数字如99再这里我有个问题想请教,怎样可以在CListC

怎样可以在CListCtrl只有16宽度的列中,正确显示了两位数字如"99"
再这里我有个问题想请教,
 
怎样可以在CListCtrl只有16宽度的列中,正确显示了两位数字呢
也就是   InsertColumn(isub,   "99 ",   LVCFMT_LEFT,   16);
 
但我现在发现目前只能
InsertColumn(isub,   "99 ",   LVCFMT_LEFT,   24);
也就是24列宽才能全显示出   99  


要是要自绘CListCtrl那么该怎样写~希望有代码

[解决办法]
设置字体的大小
http://dev.cbw.com/vc/interface/20057225003_4116363.shtml
http://www.codeproject.com/listctrl/xlistctrl.asp
[解决办法]
自绘呀,
人为的把那一列的字体设小,你怎么会有这个需求呀.
[解决办法]
在你的父窗口中响应WM_DRAWITEM消息,在响应函数
afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );

中重绘控件,应该是这样的
[解决办法]
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=323
[解决办法]
看代码
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 


int nItem=lpDrawItemStruct- >itemID;
if(nItem == -1)
return ;
CRect rcCol = lpDrawItemStruct- >rcItem;
CString sText;

CDC* pDC=CDC::FromHandle(lpDrawItemStruct- >hDC);
int nOldDCMode=pDC- >SaveDC();

LVITEM item;
item.iItem = nItem;
item.iSubItem = 0;
item.mask = LVIF_IMAGE ¦LVIF_STATE; //bu可选 //LVIF_IMAGE 可选
item.stateMask = 0XFFFF;
GetItem(&item);
BOOL bSelected = item.state&LVIS_SELECTED;

COLORREF color=::GetSysColor(COLOR_WINDOW);
if(bSelected )
{
pDC- >SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
pDC- >SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
color=::GetSysColor(COLOR_HIGHLIGHT);
}
else
{
pDC- >SetBkColor(color);
pDC- >SetTextColor(::GetSysColor(COLOR_WINDOWTEXT));
}


LV_COLUMN lvc;
lvc.mask=LVCF_FMT ¦LVCF_WIDTH;

rcCol.right = rcCol.left;
for(int nCol=0; GetColumn(nCol,&lvc); nCol++)
{

rcCol.left = rcCol.right;
rcCol.right = rcCol.left + GetColumnWidth(nCol);
HPEN hOldPen = (HPEN)::SelectObject(lpDrawItemStruct- >hDC, ::CreatePen(PS_SOLID, 1, RGB(0xc0,0xc0,0xc0)));
HBRUSH hOldBrush = (HBRUSH)::SelectObject(lpDrawItemStruct- >hDC, ::CreateSolidBrush(color));
::Rectangle(lpDrawItemStruct- >hDC, rcCol.left-1, rcCol.top-1, rcCol.right, rcCol.bottom);
::DeleteObject(SelectObject(lpDrawItemStruct- >hDC, hOldBrush));
::DeleteObject(SelectObject(lpDrawItemStruct- >hDC, hOldPen));

//sText=MakeShortString(pDC,GetItemText(nItem,nCol),rcCol.Width(),0);
sText=GetItemText(nItem,nCol); 
pDC- >DrawText(sText, -1, CRect::CRect(rcCol.left+3,rcCol.top,rcCol.right,rcCol.bottom-2), DT_LEFT);

}
pDC- >RestoreDC(nOldDCMode);


热点排行