在VC中,通过控件工具箱,可以方便地插入原生控件,实现类、控件变量和方法。而想实现自绘控件及实现响应函数,需要稍微复杂一些。
1 新建工程:Assistants
上述对话框确定后,勾选”基于对话框“,确定后生成以下头文件和实现文件:
2 新建自绘控制类
3 自绘命令按钮控件
3.1 控件属性和大小设置、绘制方法声明
// Bu:
class ButtonEx
{
public:
void SetRect(CRect rc);
void Draw(CPaintDC* pDC);
Private:
CRect m_rc; //位置大小
COLORREF m_rgb; //背景颜色
};
3.2 控件大小设置、绘制方法实现
// Bu:
ButtonEx::ButtonEx()
{
m_rgb = RGB(255,0,0);
}
void ButtonEx::SetRect(CRect rc)
{
m_rc = rc;
}
void ButtonEx::Draw(CPaintDC* pDC)
{
pDC->FillSolidRect(m_rc, m_rgb);
}
3.3 在主类头文件中包含控件类头文件及控件类实例化
// A : header file
#include "Bu"
class CAssistantsDlg : public CDialog
{
public:
CAssistantsDlg(CWnd* pParent = NULL);
ButtonEx m_btn;
};
3.4 在主类实现文件中实现控件大小及绘制控件
// A
BOOL CAssistantsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_b(CRect(CPoint(100,100),CSize(100,25)));
return TRUE;
}
void CAssistantsDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
m_b(&dc);
}
4 控件类鼠标方法的声明与实现
class ButtonEx
{
public:
……
int MouseMove(CPoint pt); //鼠标移动
int LeftDown(CPoint pt); //左键按下
int LeftUp(CPoint pt); //左键弹起
……
};
// Bu:
int ButtonEx::MouseMove(CPoint pt)
{
i(pt))
{
m_rgb = RGB(0,0,255);
}
else
{
m_rgb = RGB(255,0,0);
}
return 1;
}
int ButtonEx::LeftDown(CPoint pt)
{
i(pt))
{
m_rgb = RGB(0,255,0);
return 1;
}
return 0;
}
int ButtonEx::LeftUp(CPoint pt)
{
i(pt))
{
m_rgb = RGB(255,0,0);
return 1;
}
return 0;
}
5 在主类中实现鼠标事件
// A :
……
virtual BOOL OnInitDialog();
……
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// A
BEGIN_MESSAGE_MAP(CAssistantsDlg, CDialog)
//{{AFX_MSG_MAP(CAssistantsDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// A :
void CAssistantsDlg::OnMouseMove(UINT nFlags, CPoint point)
{
m_b(point);
Invalidate();
CDialog::OnMouseMove(nFlags, point);
}
BOOL CAssistantsDlg::OnEraseBkgnd(CDC* pDC)
{
return true;
}
void CAssistantsDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
i(point))
{
Invalidate();
return;
}
CDialog::OnLButtonDown(nFlags, point);
}
void CAssistantsDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
i(point))
{
Invalidate();
ShellExecute(this->m_hWnd, "open", "C:\\Program Files\\Google\\Chrome\\Application\\c;, ";, NULL, SW_SHOW);
return;
}
CDialog::OnLButtonUp(nFlags, point);
}
全部源代码见:
参考:
-End-
1.《vc如何更改控件属性》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《vc如何更改控件属性》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3238712.html