想在一个LABLE中显示出图片,不知是否可行,StretchDIBits需要的是DC的指针,怎么通过LABLE取得对应的DC指针。

解决方案 »

  1.   

    getdlgitem(),然后重这个指针中的到它的DC成员变量
      

  2.   


    谢谢你,GetDlgItem(IDC_STATIC_VIEW)->GetWindowDC()这样就可以得到了,但是调用StretchDIBits填充后,没有反应,然后我调用OnPain()后显示一下图片,就又变成空白,这是为什么,怎么才能让它一直显示,调用UpdateData也不行,和OnPain的效果一样
      

  3.   

    你在OnPaint里StretchDIBits,看行不行
      

  4.   

    把你OnPaint里的关键代码贴出来看看
      

  5.   

    我的意思是得到这个指针,然后找到它的m_DC成员变量,把代码贴出来看下,应该是你的DC找错了
      

  6.   


    CDC *pDC;
    pDC = GetDlgItem(IDC_STATIC_VIEW)->GetWindowDC();
    int iRes = StretchDIBits(pDC->m_hDC,0,0,176,144,0,0,176,144,
    lpImage, &BmpInfo, DIB_RGB_COLORS,SRCCOPY);lpImage是RGB数据BUFFER,一张176*144的位图数据,
    把这段代码写进OnPaint()里面效果也是一样。应该没有找错DC,要不怎么会显示一下图片呢,现在的问题是显示一下就又变成空了,给LABEL设了个初值后,显示完图片就又显示成初值了,
      

  7.   

    嗯,我后来试了这种方法就好了,CPaintDC viewdc(GetDlgItem(IDC_STATIC_VIEW));
    不过,OnPaint()有时候触发不了,用老鱼兄的OnCtrlColor()可以实现,发现这个函数会调用很多次,先这么用着,一会再结贴,看有更好的不,谢谢大家,