头文件
// MyButton 圆形按钮
class MyButton : public CButton
{
private:
bool is_pressed; //鼠标是否按下
public:
virtual void PreSubclassWindow(); //修改自绘属性
virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/); //绘制 圆形按钮
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //鼠标按下
afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //鼠标松开
afx_msg BOOL OnEraseBkgnd(CDC* pDC); //不擦除背景
};
实现文件
// MyButton
void MyButton::PreSubclassWindow()
{
ModifyStyle(0,BS_OWNERDRAW);
is_pressed = false;
CButton::PreSubclassWindow();
}
void MyButton::DrawItem(LPDRAWITEMSTRUCT lp)
{
CRect rc = lp->rcItem;
CDC dc;
dc.Attach(lp->hDC);
dc.SetBkMode(TRANSPARENT);
CBrush br;
br.CreateStockObject(NULL_BRUSH);
dc.SelectObject(&br);
if (is_pressed)
{
CPen pen(PS_SOLID,2,RGB(255,0,0));
dc.SelectObject(&pen);
dc.Elli