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

热网互联33元/月,香港/日本/洛杉矶/韩国CN2高速线路云主机

热网互联怎么样?热网互联(hotiis)是随客云计算(Suike.Cloud)成立于2009年,增值电信业务经营许可证:B1-20203716)旗下平台。热网互联云主机是CN2高速回国线路,香港/日本/洛杉矶/韩国CN2高速线路云主机,最低33元/月;热网互联国内BGP高防服务器,香港服务器,日本服务器全线活动中,大量七五折来袭!点击进入:热网互联官方网站地址热网互联香港/日本/洛杉矶/韩国cn2...

收到几个新商家投稿(HostMem,无忧云,青云互联,TTcloud,亚洲云端,趣米云),一起发布排名不分先后

7月份已经过去了一半,炎热的夏季已经来临了,主机圈也开始了大量的夏季促销攻势,近期收到一些商家投稿信息,提供欧美或者亚洲地区主机产品,价格优惠,这里做一个汇总,方便大家参考,排名不分先后,以邮件顺序,少部分因为促销具有一定的时效性,价格已经恢复故暂未列出。HostMem部落曾经分享过一次Hostmem的信息,这是一家提供动态云和经典云的国人VPS商家,其中动态云硬件按小时计费,流量按需使用;而经典...

Webhosting24:€15/年-AMD Ryzen/512MB/10GB/2TB/纽约&日本&新加坡等机房

Webhosting24是一家始于2001年的意大利商家,提供的产品包括虚拟主机、VPS、独立服务器等,可选数机房包括美国洛杉矶、迈阿密、纽约、德国慕尼黑、日本、新加坡、澳大利亚悉尼等。商家VPS主机采用AMD Ryzen 9 5950X CPU,NVMe磁盘,基于KVM架构,德国机房不限制流量,网站采用欧元计费,最低年付15欧元起。这里以美国机房为例,分享几款套餐配置信息。CPU:1core内存...

declare_message_map为你推荐
gravatarWordPress头像无法显示怎么办最开放的浏览器我国最出名的十种浏览器slideshare幻灯片的占位符的作用是?tvosairpods什么意思 airpods连接方式是怎样的inode智能客户端inode智能客户端怎么使用wifi?微信论坛手机微信论坛如何实现相似图片搜索怎么找手机上的一张相似图片?暴力破解密码8位密码暴力破解要多久银联商务招聘银联商务的正式工与派遣工有啥区别银联商务招聘急问银联商务的客服待遇如何啊?
域名备案网站 什么是域名地址 阿里云搜索 日本软银 线路工具 蜗牛魔方 qingyun 165邮箱 gspeed jsp空间 速度云 免费美国空间 昆明蜗牛家 绍兴电信 华为云盘 带宽租赁 防cc攻击 lamp怎么读 如何登陆阿里云邮箱 免备案cdn加速 更多