程序想实现如下功能:一个简单的对话框程序,里面有一个Button控件和一个Picture控件。
对话框开始时Picture控件不显示任何东西。当点击这个Button时Picture控件显示图片1,再次点击Button时显示图片2。即点击图片时Picture控件显示的图片在两张图片中切换。
本人新手,请指教。

解决方案 »

  1.   

    这个还简单,在Button点击的事件处理程序里,假设叫 OnClickBt().CStatic myStatic;
    ... OnClickBt(...)
    {
    ...
    // Create a child bitmap static control.
    myStatic.Create(_T("my static"), 
       WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50), 
       pParentWnd);// Set the bitmap of the static control to be the 
    // system check- bitmap.
    myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)) );
    }
      

  2.   

    这个还简单,在Button点击的事件处理程序里,假设叫 OnClickBt().CStatic myStatic;
    ... OnClickBt(...)
    {
    ...
    // Create a child bitmap static control.
    myStatic.Create(_T("my static"),  
      WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),  
      pParentWnd);// Set the bitmap of the static control to be the  
    // system check- bitmap.
    myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)) );
    }
      

  3.   

    按上面说的试了一下,编译时通不过:E:\VCSTUDY\dsf\dsfDlg.cpp(180) : error C2065: 'pParentWnd' : undeclared identifier
    E:\VCSTUDY\dsf\dsfDlg.cpp(184) : error C2065: 'OBM_CHECK' : undeclared identifier
      

  4.   

    pParentWnd 改成this 
    OBM_CHECK 是图片的ID怎么觉得这个帖子这么熟呢?
      

  5.   

    按照4楼说的调整。
    将pParentWnd 改成this  
    OBM_CHECK 改为IDB_BITMAP1,它是我在程序里添加的Bitmap资源的ID编译时OK,运行时还是不行:
    运行时先点击按扭,没有变化,没有显示位图,再次点击,出错。
      

  6.   

    点一次当然可以,点第二次的时候static控件又创建一遍肯定错误了
      

  7.   

    我用的CBitmap,能行。
    CStatic m_ctrlPicture;//Picture控件的关联变量
    CBitmap m_bmps[2];//假设您有两幅图片
    BOOL m_bClick;
    在OnInitDialog()中:
    UINT nIDS[] = {IDB_BITMAP1,IDB_BITMAP2};
    for(int i =0; i < 2; i++)
        m_bmps[i].LoadBitmap(nIDs[i]);然后在您的Button单击响应函数里:
    m_bClick != m_bClick;
    if(m_bClick)
        m_ctrlPicture.SetBimap((HBITMAP)m_bmps[0]);
    else
       m_ctrlPicture.SetBimap((HBITMAP)m_bmps[1]);
    给出个大概思路。楼主您根据自己的需要修改嘛。希望能对您有所帮助。
      

  8.   

    1.static.Create放到OnCreate里
    2.OnBtnClick里这么写static bFlag = TRUE;if(bFlag)
    {
          myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP1)) );
          bFlag = FALSE;
    }
    else
    {
            myStatic.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BITMAP2)) );
            bFlag = TRUE;
    }
      

  9.   

    static BOOL bFlag = TRUE;
      

  10.   

    CBitmap m_bitmapTest;
    HBITMAP   hBmp;
    BOOL      done;void CDemoDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    if(done)
    {
    hBmp = (HBITMAP)LoadImage(NULL,"001.bmp", 
        IMAGE_BITMAP,100,100, LR_LOADFROMFILE);  
    m_bitmapTest.DeleteObject();  
    m_bitmapTest.Attach(hBmp);  
    m_pctrl.SetBitmap(hBmp); 
    done=FALSE;
    }
    else
    {
    hBmp = (HBITMAP)LoadImage(NULL,"003.bmp", 
        IMAGE_BITMAP,100,100, LR_LOADFROMFILE);  
    m_bitmapTest.DeleteObject();  
    m_bitmapTest.Attach(hBmp);  
    m_pctrl.SetBitmap(hBmp); 
    done=TRUE;
    }
    }
    //其中“001.bmp”和“003.bmp”是你图片所在的路径。
      

  11.   

    11楼:编译时提示:error C2065: 'm_pctrl' : undeclared identifier
      

  12.   

    u=v20_p1_photo_1111182201351164_0.jpg][/img]
    上图是针对你提问的效果图代码的话,通过QQ加我传你不懂的可以问我QQ694271841