很多软件中将按钮的UP、DOWN、FOCUS位图做成一幅图片类似以下形式
UP|DOWN|FOCUS
但是在具体实现时时怎么控制显示不同部分的

解决方案 »

  1.   

    位图按钮CBitmapButton1 选择按钮的OwnerDraw属性 2 CBitmapButton m_btnBitmap;  //头文件中定义位图按钮 3 m_btnBitmap.LoadBitmaps(IDB_BITMAPNORMAL ,IDB_BITMAPSEL,IDB_BITMAPFOCUS,IDB_BITMAPDISABLED);    
      m_btnBitmap.SubclassDlgItem(IDC_BUTTON,this);  //IDC_BUTTON为按钮ID 
      m_btnBitmap.SizeToContent(); 
      

  2.   

    用CBitmapButton可以自动处理切换图片。
      

  3.   

    我说的IDB_BITMAPNORMAL ,IDB_BITMAPSEL,IDB_BITMAPFOCUS这几个是一个图片不是三个
      

  4.   


    一个图片?一个图片显示不同状态(down,focus,...)?
      

  5.   


    你可以看一看QQ游戏下RES目录下的位图文件
      

  6.   


    void CopyBitmap(CDC* dc, CBitmap& dest, const CBitmap& src, RECT r)
    {
    if(!src.m_hObject) return;
    int w = r.right - r.left,
    h = r.bottom - r.top; CDC memdc, hDC;

    dest.CreateCompatibleBitmap(dc, w, h); hDC.CreateCompatibleDC(dc);
    hDC.SelectObject((HBITMAP) dest); memdc.CreateCompatibleDC(dc);
    memdc.SelectObject(src); hDC.StretchBlt(0, 0, w, h, &memdc, r.left, r.top, w, h, SRCCOPY); 
    hDC.DeleteDC();
    memdc.DeleteDC();
    }
    看完上面的代码你应该明白怎么做了吧
      

  7.   

    自绘按钮就是自己贴图,
    一整幅图你操作的时候(比如使用BitBlt或者StretchBlt可以选择区域拷贝到屏幕)
    楼上代码就是