自动判断并加载图片(先从资源后从文件) HBITMAP hBmp = (HBITMAP)::LoadImage( AfxGetInstanceHandle(), 
lpszResourceName, IMAGE_BITMAP, 0,0, LR_CREATEDIBSECTION ); if( hBmp == NULL ) 
{
                //added by gameboy...
hBmp = (HBITMAP)::LoadImage( AfxGetInstanceHandle(), 
lpszResourceName, IMAGE_BITMAP, 0,0, LR_CREATEDIBSECTION | LR_LOADFROMFILE); if( hBmp == NULL)
return FALSE;
} m_bitmap.Attach( hBmp );

解决方案 »

  1.   

    读取文件位图,利用CButton::SetBitmap(HBITMAP)搞定就可以了。
    资源是编译到文件中的,好象不行
      

  2.   

    这样还是解决不了我的问题呀?还是不能用CBitmapButton
      

  3.   

    CBitmapButton::LoadBitmaps 
    BOOL LoadBitmaps( LPCTSTR lpszBitmapResource, LPCTSTR lpszBitmapResourceSel = NULL, LPCTSTR lpszBitmapResourceFocus = NULL, LPCTSTR lpszBitmapResourceDisabled = NULL );BOOL LoadBitmaps( UINT nIDBitmapResource, UINT nIDBitmapResourceSel = 0, UINT nIDBitmapResourceFocus = 0, UINT nIDBitmapResourceDisabled = 0 );由msdn可知LoadBitmaps接受磁盘文件路径的参数
      

  4.   

    CBitmapButton功能是没这么强,只能设成OwnDraw属性,自己来画。
    再派生个CMyPicButton,实际也不麻烦。
      

  5.   

    我现在倒是派生了一个类自己画,但是当把这个类用AutoLoad跟一个以存在的按钮联系起来,或者直接用Create在对话框上建一个的话,发现了一个很莫名其妙的问题,就是关闭对话框之后,程序没有真正退出,按Ctrl+Alt+Del没有发现程序,但当用VC重新Build的时候,提示该exe文件不能写入,就是说该文件还打开着,不知哪位大虾能解释一下?分可以另给。
      

  6.   

    cbitmapbutton是cbutton的子类
    设计时设为bitmap风格,
    初始化的时候用cbutton::SetBitmap(hBitmap)就可以的。我用过能实现你需要的效果。