如题,我要做个按钮,在某种情况下显示绿色位图,而在另一种情况下显示为红色位图
绿色位图和红色位图是两个位图,和按钮大小相同的。
就是最好是不在  ::OnInitDialog()  里面显示位图按钮的,有没有呢?

解决方案 »

  1.   

    写个button类,将位图句柄当作参数传入,在按纽的onpaint中画图。
      

  2.   

    显示位图和在不在::OnInitDialog() 里没关系吧~ //位图尺寸: 48*48
    CBitmap bmp;  bmp.LoadBitmap(IDB_BITMAP1);
    CBitmap bmp2; bmp2.LoadBitmap(IDB_BITMAP2); m_btnBmp.Create("", WS_VISIBLE|WS_CHILD|BS_BITMAP, CRect(0,0,48,48), this, 888);
    m_btnBmp.SetBitmap((HBITMAP)bmp.m_hObject);
    m_btnBmp.SetBitmap((HBITMAP)bmp2.m_hObject);
    bmp.Detach(); bmp2.Detach();想换图片的时候用SetBitmap换即可~
    如不满足,试下CBitmapButton;再不行就是重绘了;
      

  3.   

    有个按钮类叫CButtonST,你上网搜下,这个类不错!
      

  4.   

    那就在onpaint里绘制啊if(condition1){...}
      

  5.   

    不太明白你哩意思哎~我这个m_btnBmp就是个普通的CButton~
      

  6.   

    class CButtoEx : CButton
    {
    ....CBitmap m_bmpGreen;
    CBitmap m_bmpRed;
    .........
    }
    OnPaint()
    {
    if(某种条件成立)
    画m_bmpGreen;
    else
    画m_bmpRed;
    }
      

  7.   

    能不能写的详细一点呢,BS_BITMAP是哪里来的?
      

  8.   

    看不懂啊,完全是自学的,半路出家……
    还有呢,你会呢,就告诉我一下怎么做,不会呢,就别在这说风凉话,看什么msdn,那是高水平的人搞的东西,拿到这来说,实在是没什么意思