我在对话框上加载一个图片,然后再对话框上添加一个按钮
单击此按钮,对话框的图片发生转换,转换为另一张。
代码如下:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP_BLUE);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();现在只能加载一张图片,请问如何加载其他图片
代替背景图片阿急啊

解决方案 »

  1.   

    用static控件贴图吧,响应单击事件,贴不同的图
      

  2.   

    为什么只能加载一张? 把bmp的资源id存入数组,按钮改变下标量,load的时候以数组成员的方式加载不就可以控制了?
      

  3.   

    void CConverDlg::OnBnClickedButtonBmp()
    {
    // TODO: Add your control notification handler code here
    if (m_brBk.m_hObject != NULL)
    {
    m_brBk.DeleteObject();
    bmp.LoadBitmap(IDB_BITMAP_WIN);
    m_brBk.CreatePatternBrush(&bmp);
    bmp.DeleteObject();
    }
    }
    加了一个按钮,使用如上代码,直接运行,无法更新图片
    如果调试,便可以更改图片
    什么原因阿?
      

  4.   

    在onpaint中进行绘制 
    在按键响应改变参数
    onpaint
    {
    UINT uIDpic[5]={
    IDB_BITMAP_BLUE,
    IDB_BITMAP_ex1,
    IDB_BITMAP_ex2,
    IDB_BITMAP_ex3,
    IDB_BITMAP_ex4
    } CBitmap bmp;
    bmp.LoadBitmap(uIDpic[m_nID]);
    m_brBk.CreatePatternBrush(&bmp);
    bmp.DeleteObject();

    }OnButton
    {
    m_nID = m_nID++ % 5;
    Invalidate(false);
    }
      

  5.   


    #define MAX_COUNT 3 // 例如在资源中创建3张bmp图片,ID号连续// 成员变量
    int nIndex = 0;
    CBitmap bmp[MAX_COUNT];// 初始化bmp数组
    for(int i=0; i<MAX_COUNT; i++)
    {
    bmp[i].LoadBitmap(IDB_BITMAP1 + i);
    }// WM_PAINT消息响应函数
    void CXXXDlg::OnPaint()
    {
    CPaintDC dc(this); CDC memDC;
    memDC.CreateCompatibleDC(&dc);
    CRect rc;
    GetClientRect(&rc);

    HBITMAP hOldbmp = (HBITMAP)memDC.SelectObject(bmp[(nIndex++) % MAX_COUNT]); dc.BitBlt(0, 0, rc.Width(), rc.Height(), &memDC, 0, 0, SRCCOPY); memDC.SelectObject(hOldbmp); memDC.DeleteDC();
    }// Button按钮的BN_CLICKED消息
    void CXXXDlg::OnBnClickedOk()
    {
    // TODO: Add your control notification handler code here Invalidate();
    }