《Visual C++技术内幕[1-4章]》阅读心得总结

一、引言

学习MFC其实时间也不短了,用MFC开发的功能模块也不少,但是总感觉自己基础知识不够扎实,今天决定好好恶补一下基础知识。《Visual C++技术内幕》这本书也许没有《深入浅出MFC》出名,但是其组织结构和潘爱民老师的翻译风格都很符合我的口味,最重要的是,确实是一本好书。最近公司因为开发需要,买了一套CAD组件,这套组件是基于MFC架构,代码量更是高达50万行,开发这套组件的工程师在文档里都推荐《Visual C++技术内幕》,所以,我也义不容辞的买了一本,嘿嘿。

二、理解消息机制

自己所理解的“Windows消息循环”原理:

三、使用MFC开发应用程序过程

觉得这张图很形象,不好意思盗用一下:

四、MFC开发小技巧

我使用的是《Visual C++技术内幕》第四版。

  • 学习MFC之前必须懂得Windows的消息分发机制和窗口类(Windows Classes)的概念;
  • GDI是对图形显示设备的一种抽象,如图:
  • 学习如何创建MFC扩展DLL和常规DLL;
  • 不提倡在资源编辑器以外对RC文件进行编辑;
  • 资源编辑器可以处理EXE和DLL文件,因此我们可以用剪贴板来“偷资源”,如其他Windows应用程序的位图和图标等;
  • 在一个工作空间可以有多个项目;
  • 使用Microsoft Spy++工具可以跟踪系统进程、线程和窗口及其响应消息的信息;
  • [灵活性]在使用MFC库时,还可以在任何时候调用Win32函数,可以最大限度的使用Windows;
  • WinMain函数被隐藏于应用程序框架内部;
  • OnPaint()函数在3种情况下会被调用:1.应用程序刚刚运行时 2.在用户改变窗口大小时 3.窗口的全部或部分被重新显现时
  • MFC利用宏来映射Windows的消息到C++类的成员函数,这种机制不需要C++作任何扩展(避免虚函数表VTable带来的开销),如图:
  • 如何设置Windows环境,以便得到最快的编译速度和最佳的调试输出;
  • 视图实际上是一个从MFC库中的CView类所派生出的类的对象;
  • MFC库的架构保证了SDI程序可以很容易的升级为MDI应用程序;
  • 在CView类中调用Invalidate()函数会触发对OnDraw()的调用;
  • 使用设备环境指针pDC,就可以调用CDC的许多成员函数来完成各种各样的绘制工作;
  • 如何在CView中获取CDocument的指针:CMyView* pDoc = GetDocument();
  • *.rc是一个ASCII码文件,但最好不要使用文本编辑器来对它进行编辑;
  • 通用资源都被保存在MFC.dll库中;
  • 必须理解系统处理预编译头文件的过程;
  • 理解MFC中Virtual Function和Windows Message Handler的区别;
  • 应在构造函数中对类数据成员进行初始化;
  • 设备坐标以像素作为绘图单位;
  • 使用CDC中的LPtoDP和DPtoLP函数来进行逻辑坐标系和设备坐标系之间的转换;
  • 主动调用OnPrepareDC()函数来改变设备上下文DC的属性;

五、总结

不可否认,做项目的确是提升能力最好的途径,但是,做任何事情都不能一味的忙着赶路,偶尔也要停下来思考思考,得到了什么,失去了什么,这样,才会有沉淀和更多的提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值