打算在按钮上载入位图,按照网上的方法写。按钮是通过mfc直接拖曳上去的,而不是通过create函数创建,代码如下
CBitmapButton bmap;
bmap.LoadBitmaps(IDB_MAP1);
bmap.SubclassDlgItem(IDC_BUTTON1,this);
bmap.SizeToContent();//执行这一步出错
通过debug发现错误:void CBitmapButton::SizeToContent()
{
ASSERT(m_bitmap.m_hObject != NULL);  //这一行报错
CSize bitmapSize;
BITMAP bmInfo;
VERIFY(m_bitmap.GetObject(sizeof(bmInfo), &bmInfo) == sizeof(bmInfo));
VERIFY(SetWindowPos(NULL, -1, -1, bmInfo.bmWidth, bmInfo.bmHeight,
SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));
}

解决方案 »

  1.   

    ASSERT(m_bitmap.m_hObject != NULL);  //这一行报错
    m_bitmap没有成功载入图片,检查一下
      

  2.   

    CBitmapButton bmap; 没创建
    拖上去的话添加成员变量
      

  3.   

    汗 没看到SubclassDlgItem
    bmap不是成员变量 出了函数就没了
      

  4.   

    打算在按钮上载入位图
    =================
    1、右击按钮,在“属性”的“Styles”中选中“O所有者”
    2.CBitmapButton bmap; //在定义其他控制变量处定义bmap,
    3.DDX_Control(pDX, IDC_BUTTON1,bmap); //把控件和变量关联起来
    4.在OnInitDialog函数中添加这条语句:bmap.LoadBitmaps(IDB_ADDRESS,NULL,NULL,NULL);