吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4550|回复: 6
收起左侧

[其他转载] mfc

[复制链接]
zhanglangabce 发表于 2013-9-24 17:35
求过来人分享一下学习MFC的心得呀,,现在感觉压力好大呀,好难学。。。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

datochan 发表于 2013-10-9 15:23
      MFC这个框架相比别的界面框架来说,虽然上手有点儿麻烦,但是从框架本身封装的复杂度来说,还是比较容易掌握的。
      LZ不要有什么心理负担,从简单的入手,我建议你按照我说的如下几步来学:
  • 照着网上的教程,制作个按钮,文本框之类的。先知道一些基本控件的使用流程。
  • 上一步熟悉了之后,自己试着将MFC的那些宏的定义看一下,结合宏参数,将代码完整的拼接起来。比如:DECLARE_DYNCREATE、IMPLEMENT_DYNCREATE 等。
    这个代码展开结合参数,慢慢的你就能分析到CRuntimeClass这个类,将整个结构串起来之后,你就会明白MFC如何识别你自定义的类。同理分析 DECLARE_DYNCREATE、IMPLEMENT_DYNCREATE两个宏你就可以知道MFC如何根据识别出来的自定义类来动态创建对象,以此类推,序列化部分也可以搞定的。完整分析完成之后,你可以知道MFC如何将你自定义的类管理起来的。你可以试着写一个程序,遍历MFC中所有的类、包括MFC自身的类、你自定义的类都可以遍历出来的。写完这个程序,你对MFC的结构理解就算及格了。
    当然,如果你想更深一步的了解这些内容可以继续研究MFC的序列化反序列化的实现方法。
  • 接下来应该分析的就是MFC的消息机制,MFC如何将你点击一下按钮的动作映射到你定义的哪个方法中的。分析这一步必须要有上一步的基础,否则你会很乱。分析消息机制的入口是BEGIN_MESSAGE_MAP、END_MESSAGE_MAP两个宏, 结合 ON_BN_CLICKED之类的宏同样将其展开,分析 _messageEntries[]、messageMap、AFX_PMSG函数指针 等是如何管理你映射的那些消息的、如何将消息传送到你定义的函数中去的,等你将宏都展开看明白了,这些就都一目了然了。当你完全分析完成了就可以写一个类似SPY++的程序,写完这个程序说明MFC的消息映射机制你已经搞定了。程序样例:http://bbs.pediy.com/showthread.php?s=&threadid=9805
  • 如果你已经走到这一步,说明你对MFC已经基本的认识了。这个认识很重要。如果说MFC是一座矿山,那前面几步就是一个探钻,前面几步了解透彻了就是给这座矿山从顶到底打了一个眼儿,虽然说可能还有好多基础的知识你仍然不懂比如文档视图结构、自绘控件 等等,但是走到这一步MFC对你就已经没有任何神秘可言,剩下的就只是耐心的学习怎么用菜单、怎么用工具栏、怎么通过不同的视图展示数据、怎么使用GDI绘图,这写都不在是难点。

      好多人都说MFC已经穷途末路,有winfor、有WPF、更有许多DXD的界面库及跨平台的框架都要比MFC先进,学习MFC已经没有什么实用价值。我对说这些话的朋友都很不屑。因为学习MFC框架让我受益匪浅,比如跨平台界面的wxWidgets框架、做游戏开发时用的Turque2D游戏引擎 都是与MFC几乎是一个模子。当然有类似的框架只是少部分受益,它对于编程的新手来说,最主要的收益应该是如何组织程序、如何管理自己的代码。

      费了好大劲写了这么多,还希望LZ不要浮躁,慢慢的搞定MFC相信你也会从中受益匪浅的!
六神大叔 发表于 2013-9-24 17:41
heidongqilin 发表于 2013-9-24 18:48
 楼主| zhanglangabce 发表于 2013-10-9 20:53
bester 发表于 2013-10-9 15:23
MFC这个框架相比别的界面框架来说,虽然上手有点儿麻烦,但是从框架本身封装的复杂度来说,还是比较容 ...

谢谢指点呀,,但是因为学MFC确实遇到了挺大的阻力的,,所以我在看windowS程序设计,,我想先把这个看完再去学MFC可能会容易些。。。。。。
 楼主| zhanglangabce 发表于 2013-10-9 22:13
zhanglangabce 发表于 2013-10-9 20:53
谢谢指点呀,,但是因为学MFC确实遇到了挺大的阻力的,,所以我在看windowS程序设计,,我想先把这个看完 ...

弱弱的说一下,我问老师他说现在实际项目中也不怎么用这个东西啦。
datochan 发表于 2013-10-10 19:56
zhanglangabce 发表于 2013-10-9 22:13
弱弱的说一下,我问老师他说现在实际项目中也不怎么用这个东西啦。

是的,用的人相对比较少了。新的项目都选择drectx界面,wpf,winform,qt或者别的界面库了。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 06:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表