上面三幅图的文字自绘我分别后移了,50,35,25个像素,但是类型列的像素是够宽的,为什么自绘的时候,看不见文字呢,当后移像素增加的时候 InflateRect(rect,-50,0); DrawText(ListView1.Canvas.Handle,PChar(Item.Caption),-1,rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or 0);
楼上的真够细心。首先,你没描述“rect”是从何而来、大小是怎样的; 语句“InflateRect(rect,-50,0);”不光是“后移50个像素”,它是将矩形左右各减了50个像素。另外,在语句“DrawText(ListView1.Canvas.Handle,PChar(Item.Caption),-1,rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or 0);”中的“or 0”,我认为有点多余,如果是 “or DT_TOP”、“or DT_LEFT”,虽说实质也是 or 0,但毕竟还有个意思,而 or 0 既无改变表达式的值,也没表达以什么对齐,不如就省略了它,让语句缩短点。
语句“InflateRect(rect,-50,0);”不光是“后移50个像素”,它是将矩形左右各减了50个像素。另外,在语句“DrawText(ListView1.Canvas.Handle,PChar(Item.Caption),-1,rect,DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS or 0);”中的“or 0”,我认为有点多余,如果是 “or DT_TOP”、“or DT_LEFT”,虽说实质也是 or 0,但毕竟还有个意思,而 or 0 既无改变表达式的值,也没表达以什么对齐,不如就省略了它,让语句缩短点。