declare_message_map请问afxwin.h中class CDialog : public CWnd{...末尾处的一句DECLARE_MESSAGE_MAP()}形成映射表的代码在哪

declare_message_map  时间:2021-07-05  阅读:()

MFC中,自己写的一般类,如何添加Windows Message Handler函数。

你先用MFC自带的View,Doc这些类添加消息响应函数,看看新增的函数的声明和定义都出现在哪些地方就知道了。

比如我在一个SDI程序的Doc类中增加了AppAbout消息响应函数,然后在类的声明的最后大概是这样子的 protect: //{{AFX_MSG(CSDITestDoc) afx_msg void OnAppAbout(); //注意这句 //}}AFX_MSG DECLARE_MESSAGE_MAP() 在类的定义文件的开头有类似这样的代码: BEGIN_MESSAGE_MAP(CSDITestDoc, CDocument) //{{AFX_MSG_MAP(CSDITestDoc) ON_COMMAND(ID_APP_ABOUT, OnAppAbout) //注意这句 //}}AFX_MSG_MAP END_MESSAGE_MAP() 就是通过这几句宏代码实现了消息响应函数的关联。

你照样子在自己的类里也这么写吧。

setprintpos是什么意思

我想实现如下功能:一个对话框程序中,点击一个按钮,弹出一个包含只包含进度条的对话框CProcessDlg,此对话框没有标题栏,没有任何按钮,当进度到100时自动退出此对话框,代码如下: class CProcessDlg : public CDialog { // Construction public: CProcessDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CProcessDlg) enum { IDD = IDD_DIALOG1 }; CProgressCtrl m_ProgressCtrl; //}}AFX_DATA int m_nMax,m_nStep; // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CProcessDlg) protected: virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CProcessDlg) afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnPaint(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; BOOL CProcessDlg::OnInitDialog() { m_nMax=100; m_nStep=10; m_ProgressCtrl.SetRange(0,100); m_ProgressCtrl.SetPos(0); m_ProgressCtrl.SetStep(m_nStep); SetTimer(2,1000,NULL); return TRUE; } void CProcessDlg::OnTimer(UINT nIDEvent) { int nPrePos = m_ProgressCtrl.StepIt(); char test[10]; int nPercent=(int)((double)(nPrePos+m_nStep)/m_nMax*100+0.5); wsprintf(test,"%d%%",nPercent); GetDlgItem(IDC_PERCENT)->SetWindowText(test); if (i=100) { EndDialog(0); } CDialog::OnTimer(nIDEvent); } 现在我在CMainDlg::OnButtonProcess()中加入如下代码 CProcessDlg processDlg; processDlg.DoModal(); 但是当我按这个按钮时,弹出对话框,进度条中蓝色带没有出现,显示10%就没变单独把这个对话框类做成主窗口,一切正常,请各位达人指教

C++程序里一个头文件的解释

这段代码的作用是从CDialog派生出一个CBlueDeviceDlg类,就这么回事。

它使用一个对话框模板,如果你有全部文件的话应该能在资源编辑器中看到IDD_Device这个对话框 至于构建函数和析构函数就不用说了吧? 那个DoDataExchange()函数的作用是进行数据交换,比如说对话框上有按钮啦,编辑框啦之类的,你需要把它们关联到一个变量来使用的时候,就需要这个函数 至于那个两个奇怪的宏,是VC为了实现动态创建和消息映射而写的,具体的内容很多,这里也说不清

请问afxwin.h中class CDialog : public CWnd{...末尾处的一句DECLARE_MESSAGE_MAP()}形成映射表的代码在哪

首先,要先明白三个宏分别代表的意思: DECLARE_MESSAGE_MAP();声明该类的消息映射表 BEGIN_MESSAG_MAP和END_MESSAGE_MAP定义该类的消息映射表 而消息映射表里面有几个数据:-messageEntries[]这个static数组记录该类的消息映射关系, messageMap记录该类映射表首地址和基类的映射表地址。

且注意:能拥有消息映射表必须是CCmdTarget的派生类。

而针对你这个问题:CDialog是MFC类库,其提供给用户的只有类声明,因此你看到了它的DECLARE_MESSAGE_MAP();而类成员具体的定义是编译后被封装成了lib,因此你看不到 BEGIN_MESSAG_MAP和END_MESSAGE_MAP 而你自定义的类的消息映射表需要你自己定义,所以你必须看得见。

LOCVPS新上韩国KVM,全场8折,2G内存套餐月付44元起_网络传真服务器

LOCVPS(全球云)发布了新上韩国机房KVM架构主机信息,提供流量和带宽方式,适用全场8折优惠码,优惠码最低2G内存套餐月付仅44元起。这是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。下面分别列出几款韩国机房KVM主机配置信息。韩国KVM流量型套餐:KR-Pl...

无忧云( 9.9元/首月),河南洛阳BGP 2核 2G,大连BGP线路 20G高防 ,

无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,自营有国内雅安高防、洛阳BGP企业线路、香港CN2线路、国外服务器产品等,非常适合需要稳定的线路的用户,如游戏、企业建站业务需求和各种负载较高的项目,同时还有自营的高性能、高配置的BGP线路高防物理...

小渣云(36元/月)美国VPS洛杉矶 8核 8G

小渣云 做那个你想都不敢想的套餐 你现在也许不知道小渣云 不过未来你将被小渣云的产品所吸引小渣云 专注于一个套餐的商家 把性价比 稳定性 以及价格做到极致的商家,也许你不相信36元在别人家1核1G都买不到的价格在小渣云却可以买到 8核8G 高配云服务器,并且在安全性 稳定性 都是极高的标准。小渣云 目前使用的是美国超级稳定的ceranetworks机房 数据安全上 每5天备份一次数据倒异地 支持一...

declare_message_map为你推荐
图片地址怎么知道一张图片的地址查字网騳骉,怎样读?拼音oracle索引如何在ORACLE数据库的字段上建立索引网关和路由器的区别网关和路由器的具体区别在哪里呀?电子日历怎样调整电子日历上的时间jdk6JDK6和JDK7两个版本有什么区别,初学者选那个好?smartuploadSmartUpload组建实现文件上传下载,我要把文件保存到项目中的某个文件夹中,该如何实现?最好有程序参考51信用卡论坛51信用卡贷了1200 现在还不上怎么办菜霸现实中遇到地痞流氓该怎么办丁香园网站丁香园主网站用的是什么程序??谁能看的出来??
免费国际域名 高防直连vps 过期已备案域名 googleapps 谷歌香港 密码泄露 卡巴斯基破解版 yundun 空间登入 www789 河南移动梦网 电信网络测速器 东莞主机托管 中国域名 后门 闪讯网 cx域名 什么是dns godaddy域名 rewrite规则 更多