MFC | Win32程序流程

315 阅读2分钟

「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战

环境:VS2010+MFC

1.写在前面

程序大家都会写,但是写完的程序是如何在电脑上真正组织运行起来的,并不是每个程序员都了解。我们平时只在意自己写的程序能不能实现想要的功能,写出来的程序有没有BUG,但是对于Win32程序开发的流程却不知道。

2.流程介绍

  • Windows程序分为“程序代码”和“UI(User Interface用户接口)资源”两大部分,两部分最后以RC编译器整合为一个完成的EXE档案。

  • UI资源是指功能菜单、对话框外貌、程序图标、光标形状等东西。这些UI资源的实际内容(二进制代码)是借助各种工具产生,并以各种扩展名的文件存在的,如.ico、.bmp、.cur等等。 1643033647(1).jpg

这就是我们在VS中的资源视图中可以看到的RC资源,包括窗口、图标、菜单、版本信息等。

  • 程序员必须在一个所谓的资源描述文档(.rc)中描述它们。RC编译器(RC.EXE)读取RC文件的描述后将所有UI资源文件集中制作出一个.RES文件,再与程序代码结合在一起,这才是一个完整的Windows可执行文件。

1643033760(1).jpg 这就是程序中包含的.rc文件,每一个MFC程序都会生成一个.rc文件。

1643033854(1).jpg .rc文件中就是以这样的方式将我们的UI资源与程序代码结合在一起的,如果我们随意改动这个文件中的代码,容易引起程序打开时崩溃,所以这个文件尽量不要进行手动修改,应该通过VS编辑器自动生成。

1643033994(1).jpg 这就是在编译过程中制作出来的.res文件,他是区分Debug和Release的,是在程序生成的过程中自动生成的中间文件,这个文件的缺失不会对exe程序的启动产生影响。

1643034056(1).jpg

打开.RES文件可以看到,内容就是我们在VS中的资源视图中可以看到的RC资源。

3.总结

所以整个Win32程序的开发流程是:

  1. 由Dialog Editor生成.dlg文件;由Image Editor生成.bmp、.ico、.cur文件;等等;
  2. 上面生成的文件要在.rc文件中进行整合。
  3. 然后.c和.h文件经过C Compiler工具生成.obj文件。
  4. 同时.h和.rc文件经过 RC Compiler工具生成.res文件。
  5. 最后.obj、.def、.lib等和.res共同经过LINKER工具生成exe文件。