关于C++ Public的问题
classCMyButton:publicCButton{//Constructionpublic:CMyButton();//Attributespublic://Op...
class CMyButton : public CButton
{
// Construction
public:
CMyButton();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyButton)
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
public:
CRect m_ClientRect; //用来保存按钮的客户矩形区
BOOL m_TimerOn; //标识计时器是否打开
UINT m_State; //按钮状态
CPoint m_Point; //保存当前鼠标位置
virtual ~CMyButton();
// Generated message map functions
protected:
//{{AFX_MSG(CMyButton)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
问题是:
1、这里面怎么反复出现这么多的public???每个public以及后面的代码分别有何不同呢?
2、virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual void是虚函数的意思吗?
3、DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)是什么意思呢?? 展开
{
// Construction
public:
CMyButton();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyButton)
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
public:
CRect m_ClientRect; //用来保存按钮的客户矩形区
BOOL m_TimerOn; //标识计时器是否打开
UINT m_State; //按钮状态
CPoint m_Point; //保存当前鼠标位置
virtual ~CMyButton();
// Generated message map functions
protected:
//{{AFX_MSG(CMyButton)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
问题是:
1、这里面怎么反复出现这么多的public???每个public以及后面的代码分别有何不同呢?
2、virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual void是虚函数的意思吗?
3、DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)是什么意思呢?? 展开
1个回答
展开全部
类里面反复出现public其实是因为有时候不喜欢把所有变量或函数都堆一起,其实每个public都是一样的
不过注意,class CMyButton : public CButton,这里的public是共有继承的意思
virtual是虚函数的意思
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
你的CMyButton 类是共有继承CButton的,而DrawItem里有一个虚函数DrawItem,子类可以对父类的虚函数进行重写,如果不加virtual,则子类与父类同门的函数会导致父类同门函数被隐藏,注意,父类函数被隐藏跟父类函数被重写是不同的概念
DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
是你要重写的函数,你用的是MFC吧,我很久没用MFC了
不过注意,class CMyButton : public CButton,这里的public是共有继承的意思
virtual是虚函数的意思
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
你的CMyButton 类是共有继承CButton的,而DrawItem里有一个虚函数DrawItem,子类可以对父类的虚函数进行重写,如果不加virtual,则子类与父类同门的函数会导致父类同门函数被隐藏,注意,父类函数被隐藏跟父类函数被重写是不同的概念
DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
是你要重写的函数,你用的是MFC吧,我很久没用MFC了
追问
MFC 我还有个问题哈 class CMyButton : public CButton
CButton是类的意思吗?这个类不需要新建是不?程序自带的一个类吧?和CMenu是一样的呗?我是新手
追答
CButton是MFC自己封装的类
你可以自己写类继承于它
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询