重再 DrawItem 函数,在每个行里面贴上jpg格式的图,可为什么显示不正常,就是有的行显示出来的,有的又不显示,然后是发生重绘的时候它又有可能会显示出来,就是这样不稳定。我在 DrawItem 里面写了下列代码:IStream *pstm;
::CreateStreamOnHGlobal(/*pwxCont->hHeadImg*/hImg, FALSE, &pstm);
Image *pImg = Image::FromStream(pstm);
Graphics graph(lpDrawItemStruct->hDC);
graph.DrawImage(pImg, 4, 4, 37, 37);
delete pImg;
pImg = NULL;
pstm->Release();
pstm = NULL;我猜可能是重绘的问题,就像在DrawItem 里面调用CDC::TextOut 一样不正常。我试过了 CDC::DarwText正常工作,而CDC::TextOut不正常。
求解啊!!!!!DrawItem重绘重画自绘

解决方案 »

  1.   

    Status DrawImage(IN Image* image,
                         IN INT x,
                         IN INT y,
                         IN INT width,
                         IN INT height) 
    graph.DrawImage(pImg, 4, 4, 37, 37);
    总是 在 4,4 ?
      

  2.   

    不是的,因为 lpDrawItemStruct->hDC 这个是 DrawItem 传进来的,是列表指定item的DC,所以绘制每个item时lpDrawItemStruct->hDC 都是不一样的。
      

  3.   

    我觉得“lpDrawItemStruct->hDC 都是不一样的”
    是一样的,不同的是 rcItem 你怎么 没用 ?
      

  4.   

    真的是坐标的问题,原来那个hDC是当前可视区的DC,耶,结贴给分。