我想在三个button控件上画上三张图片上去,使得每个画上图片的按钮在鼠标点击上去的时候都能够有下压的功能。
     我的做法是,自己定义一个mybutton的类,在member varible里button的id对应的type类型选择Cbutton,再在mybutton类里调用drawitem,在drawitem里实现画图,我还在button的属性里选择了“自画”的功能,可画出来的图却是静态的。不知道哪个可以告诉我怎么实现那种下压的功能?

解决方案 »

  1.   

    so easy,不用新建类,搞那么麻烦,
    只用首先搞3个picture框,将ID改位IDC_PICTURE1,IDC_PICTURE2,IDC_PICTURE3设置属性为 NOTIFY(通知),可以响应单击事件,
    再写个函数来显示位图,
    Cwnd *pwnd=GetDlgItem(ID_PICYURE1)//得到句柄
    CDC*pDC=pwnd->GetDC();
    .....
      

  2.   

    获得控件的CDC
    利用CDC来画,可以的,但要注意在OnPaint中画
      

  3.   

    在OnPaint中利用CDC来画
    或者让按钮载入图片
      

  4.   

    void CSkinButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    // TODO: Add your code to draw the specified item
    CRect rcWin;
    GetWindowRect( rcWin ); int nStyle = m_dwStyleOrg & 0x0f; switch( nStyle )
    {
    case BS_PUSHBUTTON:
    case BS_DEFPUSHBUTTON:
    // m_strBkImagePath = _T( "Skins\\PushButton.bmp" );
    DrawPushButton( lpDrawItemStruct );
    break;
    case BS_CHECKBOX:
    case BS_AUTOCHECKBOX:
    // m_strBkImagePath = _T( "Skins\\CheckBoxButton.bmp" );
    DrawCheckBoxButton( lpDrawItemStruct );
    break;
    case BS_RADIOBUTTON:
    case BS_AUTORADIOBUTTON:
    // m_strBkImagePath = _T( "Skins\\RadioButton.bmp" );
    DrawRadioButton( lpDrawItemStruct );
    break;
    default:
    break;
    }
    }
    自己再改改
      

  5.   

    用 CButtonST 不就行了吗