如何把C++的类添加到MFC中?(mfc怎么为类添加消息处理函数)

如何把C++的类添加到MFC中?

成都创新互联公司于2013年开始,先为塔城等服务建站,塔城等地企业,进行企业商务咨询服务。为塔城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

点“插入”->“类”。弹出一对话框。类的类型选“Generic Class”,然后填入你的类名,如果你要从基类继承,在下面的表格中填上基类名、继承方式(public、protected或private)。

Ctrl W 打开类向导,在这里可以增加新的类。它会自动添加类的头文件。楼上的方法是在类中自动加成员变量,成员函数,消息响应函数。类的定义放在哪与在哪绘图无关,想要在OnDraw中绘图,是为了在那建立消息响应函数,可以简化代码。

实际上在CView与FrameView上绘图区别不大,只是绘图时用this指针时要注意范围,一个不包含工具栏,一个包含工具栏。

它们的基类都是CWnd,也就是说它们都有处理默认窗口消息的过程函数,如果你用CClientDC的话,两者没什么区别,当然如果用this指针的话会有范围上的区别。

因此在一般都在CView中增加消息响应函数,以简化代码。

如果你不求简化代码的话,可以不在OnDraw中录入代码,自已建一个消息响应函数(如:鼠标左键按下,释放,移动。。。。)。也就是用类向导,或者楼上两位说的方法。

View::OnDraw()函数响应的是WM_PAINT消息,且集成了CDC设备环境,CDC的构造,析构函数因集成,而被简化掉了。减小了代码的录入。

mfc怎么调用onpaint函数?

开启OnPaint函数有下面三种选择:

1) 直接发送WM_PAINT消息,用PostMessage(),SendMessage()函数发送WM_PAINT消息。使用以上两函数发送WM_PAINT消息,能将WM_PAINT消息发送到WINDOWS程序消息队列中,当WINDOWS将WM_PAINT消息发送给具体的消息处理函数时,如果窗口的无效区域为空则WINDOWS将不理睬该消息。若存在无效区域,则调用窗口处理函数处理。要注意的这里需要存在无效区域,因此要调用2)中的函数使得窗体(或者部分)无效,其处理过程与2)相同,将WM_PAINT消息送入消息处理队列。与3)不同的是WM_PAINT并不立即处理;

2) 调用相应的API实现WM_PAINT消息的发送:Invalidate(),InvalidateRect(), InvalidateRgn():以上函数将窗口的特定区域标定为无效,当WINDOWS检测到窗口中存在无效区域时将向消息队列发送WM_PAINT 消息。我当时用的就是Invalidate()函数;

3) UpdateWindow():该函数调用后WINDOWS将向窗口发送一个非队列化的WM_PAINT消息,它不经过消息循环而直接发送给了窗口消息处理函数。如果窗口无效区域不存在,WINDOWS将不理睬该消息。注意这里因为要使得窗口无效区不存在,因此还是调用Invalidate(),InvalidateRect(), InvalidateRgn()函数,和2)中不同的是这里的WM_PAINT消息会被立即处理,而2)中是加入消息处理队列。

简单起见,你可以使用2)中方案进行问题解决。

当前文章:如何把C++的类添加到MFC中?(mfc怎么为类添加消息处理函数)
本文路径:http://www.mswzjz.cn/qtweb/news35/117135.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能