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 而你自定义的类的消息映射表需要你自己定义,所以你必须看得见。

香港ceranetworks(69元/月) 2核2G 50G硬盘 20M 50M 100M 不限流量

香港ceranetworks提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 香港ceranetworks 8核16G 100M 这款产品 提速啦老板真的是豪气每次都给高配我测试 不像别的商家每次就给1核1G,废话不多说开始跑脚本。香港ceranetworks 2核2G 50G硬盘20M 69元/月30M 99元/月50M 219元/月100M 519元/月香港ceranetwork...

ZJI:520元/月香港服务器-2*E5-2630L/32GB/480G SSD/30M带宽/2IP

ZJI发布了一款7月份特别促销独立服务器:香港邦联四型,提供65折优惠码,限量30台(每用户限购1台),优惠后每月520元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务。下面列出这款服务器的配置信息。香港邦联四型CPU:2*E5-2...

A400互联37.8元/季,香港节点cn2,cmi线路云服务器,1核/1G/10M/300G

A400互联怎么样?A400互联是一家成立于2020年的商家,A400互联是云服务器网(yuntue.com)首次发布的云主机商家。本次A400互联给大家带来的是,全新上线的香港节点,cmi+cn2线路,全场香港产品7折优惠,优惠码0711,A400互联,只为给你提供更快,更稳,更实惠的套餐,香港节点上线cn2+cmi线路云服务器,37.8元/季/1H/1G/10M/300G,云上日子,你我共享。...

declare_message_map为你推荐
元数据管理请元数据管理包括哪些内容?科来网络分析系统如何破解电信星空极速?论坛源码求高手推荐一个好的论坛源码?要可以购买版权的那种,要便宜的bloomfilterJAVA怎么弄爬虫bindserviceservice在手机程序中起什么作用拓扑关系拓扑关系在GIS中的作用天融信防火墙笔记本怎么登陆天融信防火墙php论坛怎样快速在个人电脑上建立一个自己的PHP论坛服务器?有b吗有什么好看的b级片ruby语言ruby什么意思?什么含义?
便宜虚拟主机 天猫双十一秒杀 权嘉云 国外免费全能空间 网站木马检测工具 共享主机 hdd 卡巴斯基破解版 万网空间购买 江苏双线服务器 789电视剧网 mteam SmartAXMT800 japanese50m咸熟 优惠服务器 侦探online ftp是什么东西 电信测速器在线测网速 winscpiphone 宿主机 更多