吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8112|回复: 1
收起左侧

[其他转载] MFC自绘按钮控件显示不出来

 关闭 [复制链接]
shy88488 发表于 2012-4-8 03:27

我先创建了一个class CSkinButton : public CButton类
在这个里面创建了几个函数!
void CSkinButton::Init(UINT nNormalID, UINT nMouseOverID, CString strTipText)
{
         m_nNormalID = nNormalID;
         m_nMouseOverID = nMouseOverID;
         m_ToolTip.UpdateTipText(strTipText, this, TIP_ID);
         pWndParent=this->GetParent();
         AdjustPosition();//调整按钮大小        
        m_bMouseOver=FALSE;        
        InvalIDAte();
}

void CSkinButton::AdjustPosition()
{

        //此时按钮的RECT的LEFT和TOP参数已经在CMYPLAYER的InitButton函数中初始化过了
         CBitmap bitmap;
         BITMAP m_Bitmap;
         CRect rect;
         
        bitmap.LoadBitmap(m_nNormalID);
         bitmap.GetBitmap(&m_Bitmap);
         
        GetWindowRect(&rect);//根据图象的大小调整按钮大小
         pWndParent->ScreenToClient(&rect);
         rect.right=rect.left+m_Bitmap.bmWidth;
         rect.bottom=rect.top+m_Bitmap.bmHeight;
         MoveWindow(&rect,TRUE);        
}
当然还有几个不重要的!

然后重点
void CSkinButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
         // TODO: Add your code to draw the specified item
         UINT nID;
         CDC*pDC;
         pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
         UINT nState=lpDrawItemStruct->itemState;

    //判断舒服按有没有在按钮上        
    if(m_bMouseOver&&(!(nState & ODS_SELECTED)))
                 nID=m_nMouseOverID;
         else
                 nID=m_nNormalID;
     
        CBitmap bitmap;
         BITMAP m_Bitmap;
         CDC MemDC;
         
        
        bitmap.LoadBitmap(nID);
         MemDC.CreateCompatibleDC(pDC);
         MemDC.SelectObject(&bitmap);
         bitmap.GetBitmap(&m_Bitmap);
         
        
        pDC->BitBlt(0,0,m_Bitmap.bmWidth,m_Bitmap.bmHeight,&MemDC,0,0,SRCCOPY);
         
        bitmap.DeleteObject();
         MemDC.DeleteDC();
}


然后我在
BOOL CMyPlayerDlg::OnInitDialog()这个函数里面添加了InitButtons();这个函数

可是我的自绘按钮却一直显示不出来问题出在哪里了各位高手指点下

我要做的是哪个关闭按钮 左上角那个!
鼠标停上面也是一样没有效果!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hack0215 发表于 2012-4-8 09:34
楼主,我可是冒着被删帖的危险给您回复的,您一定要帮我求情啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表