龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用VC++仿制金山毒霸专杀工具界面[图](4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
然后在点击“开始扫描”按钮的相应事件CInterfaceDlg::OnStartbtn()中添加:if(m_bEnable) { m_StartBtn.LoadBitmaps(IDB_BITMAPOFFNORMAL,IDB_BITMAPOFFDOWN);//加载位图 m_bEnable=fals

  然后在点击“开始扫描”按钮的相应事件CInterfaceDlg::OnStartbtn()中添加:if(m_bEnable)
  {
    m_StartBtn.LoadBitmaps(IDB_BITMAPOFFNORMAL,IDB_BITMAPOFFDOWN);//加载位图
    m_bEnable=false;
    m_StartBtn.RedrawWindow();
  }
  else
  {
    m_StartBtn.LoadBitmaps(IDB_BITMAPONNORMAL,IDB_BITMAPONDOWN);//加载另一套位图
    m_bEnable=true;
    m_StartBtn.RedrawWindow();
  }以上代码的作用是控制两套位图的切换。

  好了,现在轮到Duba_GOP.exe界面中上部的那三个CheckBox风格的Button了。首先添加三个这样的按钮,但看上去与Duba_GOP.exe的按钮不太一样,于是将我的三个按钮加上“平坦”的风格,OK,行了。---www.bianceng.cn

  编译,运行,顿时大吃一惊,原来新添加的三个CheckBox的背景还是缺省的灰色,与白色的窗体背景极不协调,非常难看。看来需要改变该类Button的背景颜色了。于是,从CButton类派生出一个CColorButton类,其主要代码如下: // ColorButton.h : header file
class CColorButton : public CButton
{
……//省略了无关代码
public:
  CBrush m_brush;
  void SetBackColor(COLORREF BackColor);
protected:
  COLORREF m_BackColor;
  //{{AFX_MSG(CColorButton)
  afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
……//省略了无关代码
}
// ColorButton.cpp
BEGIN_MESSAGE_MAP(CColorButton, CButton)
//{{AFX_MSG_MAP(CColorButton)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CColorButton::SetBackColor(COLORREF BackColor)
{
m_BackColor=BackColor; //设置背景颜色
m_brush.CreateSolidBrush(m_BackColor); //创建画刷
}
HBRUSH CColorButton::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);//将背景设为透明
return (HBRUSH)m_brush;//返回自定义画刷
// return NULL;//将缺省的处理注销掉
} 好了,新类构造完成了。如何使用呢?将这三个CheckBox按钮声明为CColorButton类的三个成员变量,比如: CColorButton m_ColorBtn1;不过要记得在CInterfaceDlg::OnInitDialog()中添加:m_ColorBtn1.SubclassDlgItem(IDC_CHECK1,this);// IDC_CHECK1是其中一个CheckBox的ID
m_ColorBtn1.SetBackColor(RGB(222,223,222));// RGB(222,223,222)就是窗体背景颜色现在编译一下,可以看到这三个按钮已经融入窗体背景之中,按钮问题已经全部解决了。

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接