MFC的图片按钮为CBitmapButton,一开始创建的时候由于少写了BS_OWNERDRAW属性,导致不显示图片,因此感觉MFC只是对API的一个简单封装,因此用起来不是特别好用,有一些陷阱,不仔细就容易出现问题。CBitmapButton有个LoadBitmaps,需要把资源加到程序里,不太方便,一个方法是继承CBitmapButton,然后添加一个方法,内部是四个状态的CBitmap,用LoadImage进行加载,就可以直接从文件里加载了。
部分代码:
HBITMAP hbitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),lpszBimapResource,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);
if(!m_bitmap.Attach(hbitmap))
{
TRACE(traceAppMsg,0,"Failed to load ....");
return FALSE;
}