用CBitmapButton添加位图,运行程序崩溃,主要代码:
m_bitmapArrow.LoadBitmaps(IDB_BITMAP3);
VERIFY(m_bitmapArrow.SubclassDlgItem(IDOK,this));
m_bitmapArrow.SizeToContent();
错误:

解决方案 »

  1.   

    简单:
    1,按钮属性 Owner Draw选上,按钮ID: IDC_BUTTON1
    为IDC_BUTTON1添加CButton变量m_button,2,然后手动将CButton m_button改为
    CBitmapButton m_button;3,在初始化里边
    m_button.LoadBitmaps(IDB_BITMAP1, IDB_BITMAP2);//IDB_BITMAP1:平时;IDB_BITMAP2:按下
    //m_button.SubclassDlgItem(IDC_BUTTON1, this);//此处不要
    m_button.SizeToContent(); 
      

  2.   

    不应该啊,像你那个只要去掉那句VERIFY(m_bitmapArrow.SubclassDlgItem(IDOK,this));就应该可以的。你确定你按照了我之前回复的步骤来做,加那代码的时候是加在OnInitDialog里面的。
    我经过测试没有问题的。
    你用哪个版本编写的?我是VC6
      

  3.   

    哦,我也不知道怎么回事,今天早上我又看了看是:按钮属性选上 Owner Draw 引起的崩溃,我也崩溃了,后来我换成了Bitmap属性,用CBitmap类的对象加载的图片就好了,一会我再看看用CBitmap,用CBitmapButton类的方法行不行,谢谢你啊,我用的是VC6
      

  4.   

    刚才改回CBitmapButton类的方法,还是崩溃啊
    看来这个……我已经崩溃了,
    难道跟VC不是正版的还有关了???
      

  5.   

    晕,我最后回复一遍:(以下内容经过本人测试,完全没有问题)
    1,按钮属性 Owner Draw选上,比如按钮ID: IDC_BUTTON1
    为IDC_BUTTON1添加CButton变量m_1,2,然后手动将CButton m_button改为
    CBitmapButton m_1;3,在BOOL CTestDlg::OnInitDialog()里边
    m_1.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2);//IDB_BITMAP1:平时;IDB_BITMAP2:按下
    m_1.SizeToContent();
    如果LoadBitmaps里面只有一个Bitmap的话,效果不太好,因为你没有设置按下之后的图片,所以在点击按钮的时候没有按下的效果,所以最好添加2个图片,效果如下,有图有真相:
      

  6.   

    但是真的不成啊,不过也解决了,出来我需要的效果了,用的CBitmap类的对象获取位图,关联到Button,对于CBitmapButton的使用而引起的问题,我以后了慢慢看吧,谢谢了