VC++入门教程:从Windows程序原理到MFC应用

需积分: 10 4 下载量 30 浏览量 更新于2024-07-30 收藏 454KB PDF 举报
"VC++课堂笔记,涵盖了Windows程序内部运行原理、MFC和SDK开发的相关知识,包括文件包含、函数声明、窗口创建步骤、数据类型、函数指针、内存管理以及SDK编程的基本流程等重要内容。" 在VC++编程中,理解Windows程序的内部运行原理至关重要。MFC(Microsoft Foundation Classes)是一个C++库,用于简化Windows应用程序的开发。它生成的C++源文件通常会包含`StdAfx.h`,该文件包含了`afxwin.h`,其中定义了如`CRECT`, `CPoint`, `CWnd`等基础类及其方法。通过`Project->Setting->Debug`,开发者可以添加命令行参数,以自定义程序的启动行为。 在SDK(Software Development Kit)开发中,需要包含`windows.h`和`stdio.h`头文件。前者包含了诸如`LoadCursor`, `MessageBox`等Windows API函数的声明,后者则提供了标准输入输出功能。创建一个完整的窗口在SDK中分为四步:设计窗口类、注册窗口类、创建窗口和显示窗口。 函数指针的概念在VC++中十分常见,函数名可以直接代表其代码的首地址,这使得我们可以将函数作为参数传递或存储在数据结构中。在查询VC的数据类型时,例如`BOOL`,可以在MSDN文档中搜索并查看其在"DATATYPE"部分的定义。 字符串转换函数如`atof`用于将字符串转换为浮点数,`atoi`则用于将字符串转换为整数。`CWnd`类及其派生类中的`m_hWnd`成员变量是窗口句柄,用于操作和管理窗口。 变量的生命周期取决于其作用域,通常在包含它的大括号外结束。但`new`声明的动态内存和`static`声明的变量例外,它们具有更长的生命周期。`GetDC()`和`ReleaseDC()`,以及`BeginPaint()`和`EndPaint()`是Windows绘图过程中的一对函数,需要配对使用以防止内存泄漏。`GetStockObject()`用于获取系统预定义的画笔、画刷、字体和调色板的句柄,使用时需进行类型转换。 在指针使用中,`NULL`常用于指针赋值,表示空指针,而`0`则常用于数值赋值。野指针是指已经释放内存但仍被引用的指针,为了避免野指针,我们可以在释放后将其设置为`NULL`。SDK代码流程通常从包含必要的头文件开始,声明回调函数,接着定义窗口类并初始化,最后实现主程序入口`WinMain`,在此处创建和管理窗口。