visual-c++ - 为什么 DECLARE_MESSAGE_MAP 受保护但消息处理程序是公开的?
问题描述
例子:
protected:
// Protected Virtual Overrides
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
// Public Virtual Overrides
virtual BOOL OnInitDialog();
// Message handlers
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCheckUpdateCalendar();
afx_msg void OnCheckChangeListWeeks();
afx_msg void OnBnClickedRadioSyncAllWeeks();
afx_msg void OnBnClickedRadioSyncSingleWeek();
为什么 MFC 系统始终将事件处理程序放置在该public
区域中?我问是因为在过去我们会看到这样的代码:
//{{AFX_VIRTUAL(CTitleTip)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg) override;
virtual BOOL DestroyWindow() override;
//}}AFX_VIRTUAL
或者:
protected:
//{{AFX_MSG(CTitleTip)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
以上两个片段都在同一个文件中。我明白什么protected
意思,所以派生类仍然可以访问它。但为什么是这种混合物?
解决方案
推荐阅读
- r - 错误:当我使用 gg4xh 库中的 facetted_pos_scales 时输入无效
- python - 如何使用 django GenericForeignKeys?
- npm - 我在终端中使用命令 npm install axios 安装 axios 时遇到问题。…但不安装…
- java - 检查函数的极限无穷大
- python - 如何检查参考路径内的 3D 图?
- git - 如何更改 Git 根目录?
- docker - 如果不暴露端口,docker DNAT 是如何工作的?
- swift - 使 SwiftUI 文档可用作 EnvironmentObject
- r - 将高度可变的谷歌工作表文档读入 R
- excel - 如何生成excel报告我空手道框架?