{
 // device context for painting
    CPaintDC dc( this );
CBitmap   bitmap;
  if   (LED_SATUE=="断开") 
bitmap.LoadBitmap(IDB_LEDOFF);/ 

else   
bitmap.LoadBitmap(IDB_LEDON);/

HBITMAP   OldBitmap; 
CDC   MemDC;
CRect   rect; 
CClientDC dc1( this );

MemDC.CreateCompatibleDC(&dc1); 
GetClientRect(rect); 
OldBitmap=(HBITMAP)MemDC.SelectObject(&bitmap); 
dc1.BitBlt(148,32,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); 
          MemDC.SelectObject(OldBitmap);
// TODO: Add your message handler code here

// Do not call CDialog::OnPaint() for painting messages
}
为何切换不过来位图

解决方案 »

  1.   

    忘了说以上代码是在对话框的OnPaint中实现的
      

  2.   

    你在OnPaint里为什么要用CClientDC
    用CPaintDC
      

  3.   


    这样 CPaintDC dc( this );
    CBitmap   bitmap;
      if   (LED_SATUE=="断开") 
    bitmap.LoadBitmap(IDB_LEDOFF);//装入红灯 

    else   
    bitmap.LoadBitmap(IDB_LEDON);//装入绿灯 

    HBITMAP   OldBitmap; 
    CDC   MemDC;
    CRect   rect; 
    // CClientDC dc1( this );

    MemDC.CreateCompatibleDC(&dc); 
    GetClientRect(rect); 
    OldBitmap=(HBITMAP)MemDC.SelectObject(&bitmap); 
    dc.BitBlt(148,32,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); 
              MemDC.SelectObject(OldBitmap);
    依然不能切换!在判断按钮中加入断点,调试时可以看到能够切换视图,什么原因?
      

  4.   

    在你想切换的时候有没有调用Invalidate