首先你的CBitmap控件调BS_BITMAP样式
((CButton*)GetDlgItem(IDC_BUTTON_TEST))-gt;ModifyStyle(0, BS_BITMAP);
另外,你的m_bmp不能随意调用,默认情况下CBitmap的父类CGdiObj解析结构的时候会删除它所持有的HGDIOBJ对象。用Detach将GDI对象和CGdiObj对象分离
HBITMAP hBitmap = (HBITMAP)m_bmp .Detach();
合起来就是
CBitmap m_bmp;
m_bmp.LoadBitmap(IDB_BITMAP1);
HBITMAP hBitmap = ( HBITMAP)m_bmp.Detach();
((CButton*)GetDlgItem(IDC_BUTTON_TEST))-gt;ModifyStyle(0, BS_BITMAP);
((CButton*)GetDlgItem(IDC_BUTTON_TEST) ))-gt;SetBitmap(hBitmap);
注意:这样的话你的这个hBitmap对象如果没有注意自己释放,就发生内存泄漏了。如果这个图片在整个程序中都要用到,这样写没问题,只要你不要每次用到的时候都来一次LoadBitmap就好。每次都来LoadBitmap会不会发生泄漏、泄漏会有多严重,我现在不会了。目测会泄漏知道而且挺严重