孙鑫老师
VC
笔记
(
?/p>
)
第一?/p>
1.MFC
生成?/p>
C++
源文件中都有
StdAfx.h
,此文件包含了常用的
AFX
函数的声明,其中?/p>
afx
win.h,
此文件包含了
CRECT,CPoint
?/p>
CWnd
等许多类及其方法的声明?/p>
2.Project->Setting->Debug
可以加入命令行参数?/p>
3.
?/p>
SDK
中要加入
"windows.h"
?/p>
stdio.h
?/p>
因为
LoadCursor,MessageBox
等函数的声明在这?/p>
文件中?/p>
4.
创建一个完整的窗口的四个步?/p>
SDK
?/p>
1
设计窗口类,
2
注册窗口类,
3
创建窗口?/p>
4
显示?/p>
?/p>
5.
函数名可以代表函数代码的首地址,即可作为函数指针?/p>
6.
要查?/p>
VC
数据类型,可以在
MSDN
中输?/p>
“BOOL?/p>
然后选择
“DATA
TYPE?/p>
?/p>
7.atof
将字符串转化?/p>
float,atoi
将字符串转化?/p>
int
型?/p>
8.
所有从
CWnd
类派生的类都?/p>
m_hWnd
句柄?/p>
9.
变量的生命周期:
可以认为出了包含它的大括号,这个变量的生命周期结束?/p>
所以全局变量?/p>
声明位于所有大括号之外。但是用
new
声明的变量和?/p>
static
声明的变量除外?/p>
10.SDK
示范程序,见下面?/p>
11.sprintf
格式化字符,其头文件?/p>
stdio.h,
?/p>
MFC
中格式化字符?/p>
CString.Format
12.GetDC()
?/p>
ReleaseDC()
要成对使用,否则会内存泄漏。同样,
BeginPaint()
?/p>
EndPaint()
?/p>
13.GetStockObject()
得到画笔、画刷、字体、调色板的句柄,使用时必须用类型转换?/p>
14.
什么时候用
NULL
,什么时候用
0.
答,对指针赋值时?/p>
NULL
,对变量赋值时?/p>
0.
15.
什么是野指针?答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免野?/p>
针?答:将此指针指向
NULL
即可?/p>
p=NULL;
16.SDK
代码流程?/p>
?/p>
i
nclude
"windows.h"//
包含头文?/p>
LoadCursor,TextOut
等函?/p>
?/p>
i
nclude
"stdio.h"//
包含
sprintf,printf
等函?/p>
LRESULT
CALLBACK
MyProc(...);//
声明回调函数
int
WINAPI
WinMain()
{
WNDCLASS
wndcls;//
设计窗口?/p>
wndcls.hcursor=LoadCursor();//
初始?/p>
....
RegisterClass(&wndcls);//
注册窗口?/p>
hwnd=CreateWindow(...);//
创建窗口
ShowWindow(..);//
显示窗口
UpdateWindow(..);
MSG
msg;//
定义消息结构?/p>
while(GetMessage(...))//
消息循环
{