我这有一张图片,上面有Button的三种状态,是横着连在一起的
用CImageList后只有Draw方法,没办法用CBitmapButton
很难办
有什么好的方法吗?

解决方案 »

  1.   

    是一个整图片
    上面有三个button不同时期的图片
      

  2.   

    Button太多,一个Button四五种形态
    不能切
      

  3.   

    将三种状态分开,每一种都导入位图,然后用CBitmapButton变量将Button和位图联系起来,既方便,又灵活
      

  4.   

    用CImageList的Draw方法来绘制不是很方便么?
      

  5.   

    这是个Button
    CImageList 的Draw不好控制
      

  6.   

    不好弄,按钮按下去不好调用CImageList的Draw
      

  7.   

    不知道有没有哪位高手用过
    BOOL SetImageList(
       PBUTTON_IMAGELIST pbuttonImagelist
    );
    这个好像可以绑定ImageList和Button
      

  8.   

    做界面的話,這是比較基本的三態位圖按鈕哦。
    不用ImageList,網上大把的代碼啦。。呵呵,熟悉位圖操作和子類化按鈕的幾個狀態就ok的啦。
      

  9.   

    为什么非要用CBitmapButton?
    把按钮设置为OwnerDraw风格,在父窗口中响应WM_DRAWITEM消息,判断控件ID或者控件类型,如果是要处理的按钮,根据按钮状态用CImageList类的Draw函数来画相应的图。一共也就十几行代码就够了。
      

  10.   

    http://www.vczx.com/article/show.php?id=427
    看看应该对你有帮助
      

  11.   

    m_list.Create(16,16,TRUE,2,1);   
      m_list.Add(m_pApp->LoadIcon(IDI_ONE));   
      m_list.Add(m_pApp->LoadIcon(IDI_TWO));   
      listctrl.SetImageList(&m_list,LVSIL_SMALL);
      

  12.   

    如果非要用 CBitmapButton 那就用图像处理软件把图分开
    自绘 BitBlt 设置好参数就可以了
      

  13.   

    你那种图片是为自绘而设计的,非要用CBitmapButton就切开吧
      

  14.   

    用bitblt绘制不同的部分就好了。。
      

  15.   

    自定义你自己的BItmapButton,那样你想怎么实现画图就怎么实现
      

  16.   

    http://www.codeproject.com/KB/buttons/cxskinbutton.aspx
      

  17.   

    好像使用CImageList可以实现的.假设你有3张图片,每张图片Size40*40,整整图片Size40*120;m_Bitmap.LoadBitmap(nBitmapId);
    m_ImageList.Create(40,40,ILC_COLOR32,3,1);m_ImageList.Add(&m_Bitmap);然后直接画用m_ImageList画就好了,画的时候给出Index.
      

  18.   

    4种状态时,我用CBitmapButton,LoadBitmap后,我在头地址加对应的,就可以了
    inline CBitmap * Nor(){ //normal image (REQUIRED)
    return (CBitmap *)(PCHAR(btn)+(ULONG)(PCHAR (&m_bitmap)-PCHAR(this)));//not PTCHAR, butPCHAR
    }
    inline CBitmap * Sel(){ // selected image (OPTIONAL)
    return (CBitmap *)(PCHAR(btn)+(ULONG)(PCHAR (&m_bitmapSel)-PCHAR(this)));//not PTCHAR, butPCHAR
    }
    inline CBitmap * Foc(){ // focused but not selected (OPTIONAL)
    return (CBitmap *)(PCHAR(btn)+(ULONG)(PCHAR (&m_bitmapFocus)-PCHAR(this)));//not PTCHAR, butPCHAR
    }
    inline CBitmap * Dis(){ // disabled bitmap (OPTIONAL)
    return (CBitmap *)(PCHAR(btn)+(ULONG)(PCHAR (&m_bitmapDisabled)-PCHAR(this)));//not PTCHAR, butPCHAR
    }
    因为CBitmapButton中有4种状态了
      

  19.   

    参考 skinfeature
    http://www.skinfeature.com/bbs