1)每个界面(对话框)都是一个类。
2)习惯上IDC表示标签,IDS表示字符串,IDD表示对话框
3)MFC工程编译时有两种方式,
第一:Debug方式
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
第二:Release方式
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
4)当MFC的一个工程运行缓慢时,可以试着删除.clw .opt .dsw文件,然后由.dsp文件再生成,这时编译速度可能有所提高。
5)运行时产生的.obj和.sbr文件都在debug或Release文件中存放。
6)vc6.0中工程可以分为
1.ClassView类视图
2.ResourceView资源视图
3.FileView文件视图
7)如果你在 a.h 里 include "b.h"然后在 a.cpp 里 include "a.h"那结果就是 编译器把 b.h 的内容放在 a.cpp 的最前面 ,然后把 a.h 的内容放在次前面,下面才到 a.cpp 的内容
8)#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。
9)
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
(1)#ifdef _DEBUG 是编译时预定义的符号,是VC环境默认产生的,在设置中可以找到 表示现在的运行模式时调试态, (2)#define new DEBUG_NEW 把 new 这个关键字用 DEBUG_NEW 这个宏替代,在调试状态能检测内存泄露 和帮助管理内存。 (3)#undef THIS_FILE undef和enddif的含义是什么?THIS_FILE是自己编写的?还是系统默认的指定用词? undef是取消一个符号定义。 endif是便是一条件编译的结束。THIS_FILE就是一个普通的符号名。取消定义后,下面就能安全使用了。 __FILE__是编译器预定义的符号,就是正在编译的文件名。这句话就是声明一个静态的字符串THIS_FILE。 相当于: static char THIS_FILE[] = "a.c";
10)这些定义被“//{{AFX_DATA”和“//}}AFX_DATA”引用,表示是ClassWizard添加的,程序员不必修改它们。对话框数据交换指以下两种动作,或者是把内存数据写入对应的控制窗口,或者是从控制窗口读取数据并保存到内存变量中。MFC为了简化这些操作,以CDataExchange类和一些数据交换函数为基础,提供了一套数据交换和校验的机制。使用::GetWindowsText从控制窗口读取数据,或者使用::SetWindowsText写入数据到控制窗口。MFC还提供了许多其他数据交换函数(“DDX_”为前缀)和数据验证函数(“DDV_”为前缀)。使用MFC的数据交换和验证机制,大大简化了程序员的工作。通常在OnInitDialog中,MFC调用UpdateData(FALSE)把数据送给控制窗口显示;在OnOk中,调用UpdateData(TRUE)从控制窗口中读取数据。上文中提到DDX_Xxxxx数据交换函数可以进行双向的数据交换,那么它们如何知道数据传输的方向呢?这通过DDX_Xxxxx函数的第一个参数pDX(也就是DoDataEx change的参数pDX)所指的CDataExchange对象来决定,pDX指向一个CdataExchange对象。
11)C++语言是一种半面向对象语言,它兼有C语言的不少全局函数,并非所有的函数都封装在类中的。