我通过设备DC来显示位图CClientDC    dc(this);
    CDC         memDC;
    CRect        rect;
    CBitmap     bitmap,b1;
//    b1=bitmap;
    HBITMAP      bm;
    GetWindowRect(rect);
    CBitmap *pOldBitmap;
    memDC.CreateCompatibleDC(&dc);
    bitmap.CreateCompatibleBitmap(&dc, rect.Width(),rect.Height());
    pOldBitmap = memDC.SelectObject(&bitmap);
    memDC.BitBlt(0, 0, rect.Width(),rect.Height(), &dc, 0, 0, SRCCOPY);
        bm=(HBITMAP)bitmap.GetSafeHandle();
//    bitmap.Attach();
    m_pStack->Add(bm);
    memDC.SelectObject(pOldBitmap);
    bitmap.Detach();但当最大化后消失了,怎么回事?怎么办?谢谢!!

解决方案 »

  1.   

    最大化后窗口重绘了,将绘制图象的代码放在OnPaint函数中即可
      

  2.   

    调用这段代码的位置不对是在OnDraw(视图)或OnPaint(对话框程序)中吗
      

  3.   

    我是放到一个按钮事件里面,怎么放到OnDraw里面去?
      

  4.   

    把绘制图象的代码放在OnPaint或OnDraw函数中,按钮事件里面调用Invalidate函数重画
      

  5.   

    在按纽里调用一下Invalidate函数,就会发送一个重画消息,就能响应OnPaint或者OnDraw了。
      

  6.   

    设个标致位。bool flag = false;
    在按按钮的代码里面flag = true;
    Invalidate()ondraw里面if(flag){
    //画图片。
    }
      

  7.   

    我是放到一个按钮事件里面,怎么放到OnDraw里面去?
    ==================
    所有的画图动作最好都放在OnDraw中,然后通过调用Invalidate来通知系统重绘
      

  8.   

    把你这段代码剪切,然后粘贴到OnDraw函数里面就可以了
      

  9.   

    To wltg2001,你的这个说法不对!因为重绘在很多时候效率是个大问题,不允许这样做的。在需要效率的地方必须使用局部更新机制,而这个机制的基础就是GetDC.========================================
    提界面问题,UIPower有问必答!
    界面论坛:http://www.uipower.com/bbs我们有专员负责网友问题的解答,真诚为你服务!
    [如果有很紧急的问题,也可以直接致电我们:021-33130099-806]
      

  10.   

    你的控件在最大化时候没有绘制完,你就对其生成Bitmap了。========================================
    提界面问题,UIPower有问必答!
    界面论坛:http://www.uipower.com/bbs我们有专员负责网友问题的解答,真诚为你服务!
    [如果有很紧急的问题,也可以直接致电我们:021-33130099-806]
      

  11.   


    1. 最大化后窗口重绘了,所以此时图像被清除2. 如果你不想放在OnDraw内实现,那么可以这样做:
    将下边各个变量都定义成对话框的成员
    CClientDC    dc(this); 
        CDC        memDC; 
        CRect        rect; 
        CBitmap    bitmap,b1; 
        HBITMAP      bm; 析构函数内删除,构造函数内创建。3. 如果觉得麻烦,那就建议把代码放入OnDraw内,因为OnDraw的参数内已经有了CDC,所以不必再定义CDC memDC;然后用10楼的方法,再定义一个
    BOOL m_flag;//成员变量
    m_flag = TRUE;//进行绘图
    m_flag = FALSE;//不绘图是否显示图片就看m_flag的值了。   
      

  12.   

    Fireway2008的工作比较仔细,推荐!========================================
    提界面问题,UIPower有问必答!
    界面论坛:http://www.uipower.com/bbs我们有专员负责网友问题的解答,真诚为你服务!
    [如果有很紧急的问题,也可以直接致电我们:021-33130099-806]