在一个基于对话框的MFC中,如何在同一个图像控件上切换俩张不同的IDB_BITMAP

解决方案 »

  1.   

    处理切换事件函数,在里面刷新Invalidate()或者InvalidateRect()就可以了
    当然了,先把绘制的函数放到OnPaint()中去
      

  2.   


    HBITMAP m_RedBall,m_GreenBall,CStatic m_Picture1;m_RedBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), 
             ".\\小红灯.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    m_GreenBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), 
             ".\\小绿灯.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    m_Picture1.SetBitmap(m_RedBall);
    m_Picture1.SetBitmap(m_RedBall);
      

  3.   

    m_Picture1.SetBitmap(m_RedBall);
    m_Picture1.SetBitmap(m_GreenBall );
      

  4.   

    C:\Users\张俊旗\Desktop\12.28 - 副本\RS232Dlg.cpp(1506) : error C2146: syntax error : missing ';' before identifier 'm_Picture1'
    C:\Users\张俊旗\Desktop\12.28 - 副本\RS232Dlg.cpp(1506) : error C2065: 'm_Picture1' : undeclared identifier
    C:\Users\张俊旗\Desktop\12.28 - 副本\RS232Dlg.cpp(1510) : error C2228: left of '.SetBitmap' must have class/struct/union type
    C:\Users\张俊旗\Desktop\12.28 - 副本\RS232Dlg.cpp(1511) : error C2228: left of '.SetBitmap' must have class/struct/union type3楼我按照你那个代码编的,这里有几个错误怎么解决呢,还有你那个小红灯.bmp是放在res文件夹里面的吗
      

  5.   

    m_Picture1应该是和图像控件关联在一起的一个变量
      

  6.   

    不知道这个".\\小红灯.bmp", 图片是放在哪然后被加载进去的
      

  7.   

    void CRS232Dlg::OnButton6() 
    {
    // TODO: Add your control notification handler code here
    HBITMAP m_RedBall,m_GreenBall;
    CStatic m_Picture1;m_RedBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),  
      ".\\未命名.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    m_GreenBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),  
      ".\\2.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    m_picture1.SetBitmap(m_RedBall);
    //m_picture1.SetBitmap(m_GreenBall);
    }
    问题出现了,点击控件后,初始化的图片控件消失了?
      

  8.   

    我是把图像控件关联了一个m_picture1: CStatic m_picture1;后来就出现这个问题
      

  9.   

    HBITMAP m_RedBall,m_GreenBall;
    CStatic m_Picture1;m_RedBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),   
      ".\\未命名.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    m_GreenBall = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),   
      ".\\2.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
    放:
    void CRS232Dlg::CRS232Dlg() 中。 
      

  10.   

    m_picture1必须是的控件关联的一个变量,而你上面的代码只是定义了一个这个变量。
      

  11.   

    就是这样,m_picture1是PICTURE控件里的一个变量,就是在控件用鼠标右键,选添加变量生成的
      

  12.   

    这是动太加载的,图片文件放在当前目录里.比如当前目录是c:\aa,也就是可执行文件在aa目录里,那么就把图片放在AA目录里,这样就在程序里写成".\\小红灯.bmp",".\\"表示当前目录.