WEB开发网
开发学院软件开发VC 用VC++仿制金山毒霸专杀工具界面 阅读

用VC++仿制金山毒霸专杀工具界面

 2008-01-19 20:25:05 来源:WEB开发网   
核心提示:然后在点击“开始扫描”按钮的相应事件CInterfaceDlg::OnStartbtn()中添加:if(m_bEnable){m_StartBtn.LoadBitmaps(IDB_BITMAPOFFNORMAL,IDB_BITMAPOFFDOWN);//加载位图m_bEnable=false;m

然后在点击“开始扫描”按钮的相应事件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,行了。

编译,运行,顿时大吃一惊,原来新添加的三个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)就是窗体背景颜色现在编译一下,可以看到这三个按钮已经融入窗体背景之中,按钮问题已经全部解决了。

上一页  1 2 3 4 5  下一页

Tags:VC 仿制 金山

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接