代码如下:
class CBtn: public CButton
{
   public:
   void SetBtnBitmap();
}void CBtn::SetBtnBitmap()
{
  CBitmap bitmap;
  bitmap=LoadBitmap(Bitmap1);    //Bitmap1位图
  this->SetBitmap(bitmap);
}
当鼠标按下时调用SetBtnBitmap()为什么不能把按钮的图标改过来,应怎么做?

解决方案 »

  1.   

    CButton::SetBitmapHBITMAP SetBitmap( HBITMAP hBitmap );返回值:返回此前在按钮上设置的位图的句柄。参数: hBitmap 位图的句柄  说明:
    本函数用于为按钮设置一个新的位图。
    位图将会被自动地放到按钮的表面,缺省时居中放置。如果位图太大,则会被剪裁。可以选择的对齐方式有: · BS_TOP  
    · BS_LEFT  
    · BS_RIGHT  
    · BS_CENTER  
    · BS_BOTTOM  
    · BS_VCENTER  
    CBitmapButton对象可以有四个位图,而SetBitmap只为每个按钮设置一个位图。在按钮被按下时,位图也被向右下角按下了。
    得用按钮控件变量
      

  2.   

    CBitmapButton::LoadBitmaps(   LPCTSTR   lpszBitmapResource,   LPCTSTR   lpszBitmapResourceSel   =   NULL,   LPCTSTR   lpszBitmapResourceFocus   =   NULL,   LPCTSTR   lpszBitmapResourceDisabled   =   NULL   ); 
      四个参数分别为:正常、按下、焦点、Disable四种状态下的位图
      

  3.   

    将按钮风格stytle  ownerdraw  bitmap勾上
    .h  
    CBitmapButton m_btn;
    .cpp
    OnInitDialog()添加m_btn.LoadBitmaps(IDB_asd,0,0,0);
    m_btn.SubclassDlgItem(IDC_BUTTON1,this);
    m_btn.SizeToContent();按钮响应代码
    void CMmunuDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    m_btn.LoadBitmaps(IDB_qwe,0,0,0);//最多可以加载4幅,至少加载一幅。
    Invalidate();
    }
      

  4.   

    你的bitmap对象是一个局部变量!