本帖最后由 xlhfzs 于 2011-02-27 23:12:13 编辑

解决方案 »

  1.   

    http://www.codeproject.com/KB/buttons/cwbbutton.aspx
    参考
      

  2.   

    你贴图的时候难道不会自己计算rect?
      

  3.   

    假设图片长宽都是20像素.
    HBITMAP hBMP1=(HBITMAP)LoadImage(AfxGetApp()->m_hInstance,sz,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    HDC MemDC1=CreateCompatibleDC(dc.GetSafeHdc());
    HBITMAP hOld1=(HBITMAP)SelectObject(MemDC1,hBMP1);
    //如果正常
    TransparentBlt(dc.GetSafeHdc(),m_rcOption.left,m_rcOption.top,20,20,MemDC1,0,0,20,20,RGB(255,0,255));
    //如果悬停
    TransparentBlt(dc.GetSafeHdc(),m_rcOption.left,m_rcOption.top,20,20,MemDC1,20,0,20,20,RGB(255,0,255));
    //如果按下
    TransparentBlt(dc.GetSafeHdc(),m_rcOption.left,m_rcOption.top,20,20,MemDC1,40,0,20,20,RGB(255,0,255));
    //如果禁用
    TransparentBlt(dc.GetSafeHdc(),m_rcOption.left,m_rcOption.top,20,20,MemDC1,60,0,20,20,RGB(255,0,255));
      

  4.   

    listview 可以帮你做到吧
    根据鼠标行为,不停的改变显示的图片
      

  5.   

    把位图选进MemDC,
    dc.BitBlt(0,0,bmp.width/4,bmp.height,MemDC,status*bmp.width/4,0,SRCCOPY);//status为状态从0到3这是大概的意思。。
      

  6.   

    如果你是MFC程序的话,我可以给你一个按钮类我自己写好的,40必定是我的。