代码如下:
pStaic=(CStatic*)GetDlgItem(IDC_STATIC);
    hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),"1.bmp",
    IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//|LR_CREATEDIBSECTION);
    hbmp.Attach(hbitmap);
    hbmp.GetBitmap(&bm);
    dcMem.CreateCompatibleDC(GetDC());
    poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);
    CDC *pDC = pStaic->GetDC();
    pStaic->GetClientRect(&lRect);
    pDC->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),
        &dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    dcMem.SelectObject(&poldBitmap);
pStaic->ReleaseDC(pDC);
这个代码是在按钮事件代码中的,就是我触发了button,就在static text中显示了一幅位图,但是有个问题,就是位图不能一直显示,如果我再做其他的事情,例如拖动一下对话框什么的,图片就立刻没了,这是什么原因

解决方案 »

  1.   

    然后在button事件中调用OnPaint是么,可是这样根本显示不出来了啊
      

  2.   

    其实你用Static显示位图,何必如此麻烦,用下面的代码就行了:
    写在Button事件中:
    CStatic *p=(CStatic *)GetDlgItem(IDC_P);
    HBITMAP hBitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),_T("1.bmp"), IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    p->SetBitmap(hBitmap);
    注意,我用的ID是IDC_P,改一下就行了。
      

  3.   

    void CMy1Dlg::OnOK() 
    {
    // TODO: Add extra validation here
    CStatic *p=(CStatic *)GetDlgItem(IDC_STATIC);
    HBITMAP hBitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),_T("1.bmp"), IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    p->SetBitmap(hBitmap);}
      

  4.   

    有几个注意的地方。
    第一:在控件工具箱选控件时,用picture control而不要用static Text控件
    第二:在picture control控件的type属性中选“Bitmap"。
      

  5.   

    额,要求用static text显示啊
      

  6.   

    static text和picture control本身就是一回事啊。对MFC来说,都对应着CStatic这个类,只不过static Text控件的属性栏上好像没办法改type,我用的是2005,不记得别的版本能不能改。
      

  7.   

    你就按着wltg2001说的做肯定没错
    老师要是说你你就让他来这面发帖子
    我们收拾他
      

  8.   

    也就是CStatic控件要有SS_BITMAP风格。
      

  9.   

    换ID,不要用IDC_STATIC,换成IDC_XXXX
      

  10.   

    楼主,我也遇到过类似的问题,不过我的问题是在BUTTON控件里显示一个图标,我用的是CBOTTON::SETICON()函数,但不管我怎么搞都没显示图标,不知道怎么回事?后来我看到别人的一个案例,其中有个继承于CBOTTON 类的自定义类CBottonST类,当我用CBottonST::SETICON()函数显示图标时,成功了,我不知道为什么CBOTTON::SETICON()函数没用,而CBottonST::SETICON()函数则能用.不过你说的"拖动一下对话框什么的,图片就立刻没了"的问题很可能是你没进行文档序列化,这样是不能保存画面的,只要窗口发生变化,窗口就重绘,所有图片都会被清理掉.
      

  11.   

    OpenGL高手请进:http://topic.csdn.net/u/20100616/11/4419a6ae-978f-4c73-a6ec-ed71477304c3.html
      

  12.   

    利用双缓冲技术,在OnPaint中处理
      

  13.   

    首先,我觉得lz的问题是否对。前些我为测试类而写的基于对话框的测试程序,就是在static text上显示的图片,也是compatible dc缓冲的方法,没有在on paint中加什么东西,可以没有说移动就会消失的情况