Timers and Animation

theForger's Win32 API教程第二版(简体中文)

主页

基础
  1. 开始学习
  2. 一个简单的窗口
  3. 处理消息
  4. 理解消息循环
  5. 使用资源
  6. 菜单和图标
  7. 对话框
  8. 非模态对话框
  9. 标准控件
  10. 对话框常见问题
创建一个简单应用
  1. 在运行时创建控件
  2. 文件与常用对话框
  3. 工具栏与状态栏
  4. 多文档界面
图形设备接口
  1. 位图,设备上下文
  2. 透明位图
  3. 定时器与动画
  4. 文本,字体与顏色
工具与文档
  1. 参考
  2. 免费的Visual C++(最新更新)
附表
  1. 常见错误的解決方法
  2. API vs. MFC
  3. 关于资源文件的说明

关于资源文件的几点说明

啊!

  我在把我的主要的开发环境从Borland C++转向微软的Visual C++后最痛恨的一件事就是VC++处理资源腳本的方式.

  在BC++中我可以自由地控制.rc文件的佈局和內容,而且在使用资源编辑器时,只有我在编辑器中作过修改的地方才在资源文件中被修改.令我十分沮丧的是,VC++的资源编辑器会完全地把你的.rc文件进行改写,并可能毀掉或是忽略掉你自己作的任何修改.

  刚开始我是非常的郁闷,但是我基本上学会处理这种情況了,过了一些时间后就至少沒有那么差劲了,因为我一般不是完全手工写我的资源文件,只是在不能编辑器完成的时候作一点小小的修改.

兼容性

  我试图把这个教程中的所有的样例做得能不做修改地在VC++和BC++中都能正确地编译. 在原来的版本的教程中,我用Borland的命名规则来命名资头文件,即project_name.rh.但是在VC++中这个头文件默认总是叫作resource.h,所以为了简便我在这个教程中作了一些调整修改,反正对BC++沒有什么影响的.

  对于那些好奇的人,他们可以修改资源的名字,在VC++中可以手动修改.rc文件并在两个位置修换名字,一个是#include的地方,另外一个包含于一个TEXTINCLUDE资源之中.

  另外一个问题就是VC++默认地需要在.rc文件中包含afxres.h,而BC++自动地定义了所有必要的预处理宏所以不需要这个包含.还有一件事就是afxres.h只存在于那些装了MFC的机器上,而不是所有的情況如此,就算是你只创建一个只需要总是存在的winres.h的API应用时也是这样.

  因为我用VC++并用它的资源编辑器,所以我的解決方案是:稍微地改了下每个自动生成的.rc文件以包含下面这些东西:

#ifndef __BORLANDC__
#include "winres.h"
#endif

  改之前默认的通常是这样的:

#include "afxres.h"

  对于使用VC++的那些读者,你们可以在IDE中的”View>Resource Includes”菜单下面找到改变这里的文本的选项.一般的实际工作中是不需要这样做的,我这里只是想让这些样例同时能在BC++和VC++编译.

  对于使用BC++的读者,我对在.rc文件中加上这些额外由VC++编辑器生成的东西说声对不起,但是它们不会影响任何事情的.

在BC++下编译资源

  我试了好久也沒有发现一个在BC++中简单的编译一个包含资源文件的程序,最后只有转向一种非优化的方式,你可以在教程包含的makefile中找到这种分配. 你也可以参閱免费的Borland C++命令行工具.

Copyright © 1998-2008, Brook Miles (forgey). All rights reserved.