declare_message_mapBEGIN_MESSAGE_MAP( CMainFrame, CFrameWnd )//宏定义为啥需要CMainFrame与CFrameWnd?

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

CPaintDC CRect GetClientRect 是什么函数

#include <afxwin.h> class CHelloApp : public CWinApp { public: virtual BOOL InitInstance (); //为什么要用 virtual, virtual只对它的派生类有用啊!下面又没有它的派生类?? }; CHelloApp myApp; class CMainWindow : public CFrameWnd { public: CMainWindow () { Create (NULL, _T ("The Hello Application")); //_T有什么用(好像是什么字符编码转换)?在那些情况下要用?? } protected: afx_msg void OnPaint (); DECLARE_MESSAGE_MAP () }; BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT () END_MESSAGE_MAP () void CMainWindow::OnPaint () { CPaintDC dc (this); CRect rect; GetClientRect (&rect); dc.DrawText (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); } BOOL CHelloApp::InitInstance () { m_pMainWnd = new CMainWindow(); //这里加了个括号,什么意思,为什么没错??? //CMainWindow mwnd;为什么用new就行,不能这样用(好像是此函数结束就销毁这个对象,为什么new可以??) //m_pMainWnd=&mwnd; m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return TRUE; }

m_pMainWnd 作用?

解释一下这几句代码。


m_pMainWnd = new CMainWindow;
//m_pMainWnd 是CMyApp的一个成员变量,这句新建了一个CMainWindow类对象,并将其地址赋给m_pMainWnd,以后用这个指针来操作此对象

m_pMainWnd->ShowWindow(m_nCmdShow);
// 这句决定了CMainWindow对象(派生自CFrameWnd类,这是一个框架类,窗口可能带菜单、工具栏等等)是否显示窗口,参数为m_nCmdShow。

一般如果你需要显示窗口就用SW_SHOW这个参数,隐藏窗口就用SW_HIDE。



m_pMainWnd->UpdateWindow();
// 刷新窗口,让其立即重绘

VC++中出现:Parsing error:Expected"afx_msg".Input Line:"DECLARE_MESSAGE_MAP()"请问是什么意思啊

有时候在给程序的类添加消息响应或者虚函数的时候,会弹出“Parsing error:Expected "afx_msg",input line.......” //{{AFX_MSG(CMyimageDoc) public: afx_msg void OnStart(); afx_msg void Onsavefile(); afx_msg void (); protected: afx_msg void OnFileSaveAs(); afx_msg void OnFileSave(); afx_msg void OnOriginalimage(); afx_msg void Onopenfile(); //}}AFX_MSG DECLARE_MESSAGE_MAP() 如果你想给CMyimageDoc类添加虚函数或者消息响应的话就会弹出"Parsing error:......",你打开ClassWizard也会弹出这种错误。

如果你在View类里打开的ClassWizard弹出这种错误的话,需要查找到底是哪个类中出现了问题,只需要再没个类中点右键添加虚函数(或者消息响应)就能查找出来大地哪儿出现了问题。

本例然后再需要改成 public: //{{AFX_MSG(CLock_imageDoc) afx_msg void OnStart(); afx_msg void Onsavefile(); afx_msg void (); afx_msg void OnFileSaveAs(); afx_msg void OnFileSave(); afx_msg void OnOriginalimage(); afx_msg void Onopenfile(); //}}AFX_MSG DECLARE_MESSAGE_MAP() 再添加的话就会没问题了。

ClassWizard也能顺利打开了。

还有一种是自己添加的消息,如 public: //{{AFX_MSG(CLock_imageDoc) afx_msg void OnStart(); afx_msg void Onsavefile(); afx_msg void (); afx_msg void OnFileSaveAs(); afx_msg void OnFileSave(); afx_msg void OnOriginalimage(); afx_msg void Onopenfile(); afx_msg void OnmyMessage(); ///////////自己添加的消息对应的消息响应 //}}AFX_MSG DECLARE_MESSAGE_MAP() 此时的ClassWizard也会弹出"Parsing error:......",此时值需要改成 public: //{{AFX_MSG(CLock_imageDoc) afx_msg void OnStart(); afx_msg void Onsavefile(); afx_msg void (); afx_msg void OnFileSaveAs(); afx_msg void OnFileSave(); afx_msg void OnOriginalimage(); afx_msg void Onopenfile(); //}}AFX_MSG afx_msg void OnmyMessage(); ///////////自己添加的消息对应的消息响应(放在//}}AFX_MSG的外面才行) DECLARE_MESSAGE_MAP() 这样就不会出问题了。

MFC中有一种特殊的注释,叫注释宏。

注释宏一般由VC自动加入到你的代码中。

它是为class wizard服务的,class wizard通过它来定位各种系统自动添加代码的添加位置。

若要使用类向导添加成员变量和成员函数,则要保留注释宏;否则,必须手动添加。

如果你把它删了,classwizad就不能自动生成代码了 。

你添加消息响应的时候是不是发现源代码里多了些代码??那些代码为什么会在那里出现?为什么不在别的文件里出现?就是因为那里有注释宏它要将代码生成在相应注释宏之间 。

(这个注释是让ClassWizard能够分辨出哪些代码是它生成的,哪些是你自己写的。

你自己写的代码要在这个注释之外,这样ClassWizard再修改消息映射的时候就不会管你的代码了。

新版本vc(vs)已经没有注释宏了。

BEGIN_MESSAGE_MAP( CMainFrame, CFrameWnd )//宏定义为啥需要CMainFrame与CFrameWnd?

需要消息传递啊。

有很多消息是你的类不想处理的,这种消息怎么办?当然是由基类来处理。

所以你要用 BEGIN_MESSAGE_MAP 来告诉框架哪个是子类,哪个是基类。

HostKvm:香港国际/韩国KVM夏季7折,2G内存套餐月付5.95美元起

HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。目前商家发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付5.95美元起。下面分别列出几款主机套餐配置信息。套餐:韩国KR...

PacificRack:洛杉矶KVM月付1.5美元起,1G内存套餐年付12美元起

PacificRack在本月发布了几款特价产品,其中最低款支持月付仅1.5美元,基于KVM架构,洛杉矶机房,PR-M系列。PacificRack简称PR,QN机房旗下站点,主要提供低价VPS主机产品,基于KVM架构,数据中心为自营洛杉矶机房,现在只有PR-M一个系列,分为了2个类别:常规(Elastic Compute Service)和多IP产品(Multi IP Server)。下面列出几款秒...

pia云低至20/月,七折美国服务器

Pia云是一家2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台上,商家主要销售VPS服务,采用KVM虚拟架构 ,机房有美国洛杉矶、中国香港和深圳地区,洛杉矶为crea机房,三网回程CN2 GIA,带20G防御,常看我测评的朋友应该知道,一般带防御去程都是骨干线路,香港的线路也是CN2直连大陆,目前商家重新开业,价格非常美丽,性价比较非常高,有需要的朋友可以关注一下。活动方案...

declare_message_map为你推荐
ipv6无网络访问权限WIN7本地连接,IPV4和IPV6无网络访问权限怎么解决gravatar游戏王mycrad怎样换头像?md5值文件名后缀为MD5是什么文件。mindmanager破解版xmind mac破解版哪个好用inode智能客户端iNode 智能客户端windows7上网方法数秦科技安徽数智通科技有限公司怎么样?smartuploadSmartUpload组建实现文件上传下载,我要把文件保存到项目中的某个文件夹中,该如何实现?最好有程序参考ruby语言Ruby是一种什么样的语言,主要用来做什么,现在有一家公司让我从java转ruby,我很犹豫?cf加速器玩cf ping高用什么加速器比较好pci数据捕获和信号处理控制器三星450r5v x05 设备管理器出现pci数据捕获和信号处理控制器有个黄色的感叹号怎么办
大庆服务器租用 购买域名和空间 免费cn域名 openv xen 魔兽世界台湾服务器 华为网络硬盘 免费网站申请 七夕促销 seednet 老左正传 双线主机 双十一秒杀 atom处理器 腾讯网盘 谷歌搜索打不开 石家庄服务器 脚本大全 .htaccess pptpvpn 更多