Windows编程基础(新手入门)

上传人:壹****1 文档编号:513677781 上传时间:2023-09-02 格式:DOC 页数:21 大小:379KB
返回 下载 相关 举报
Windows编程基础(新手入门)_第1页
第1页 / 共21页
Windows编程基础(新手入门)_第2页
第2页 / 共21页
Windows编程基础(新手入门)_第3页
第3页 / 共21页
Windows编程基础(新手入门)_第4页
第4页 / 共21页
Windows编程基础(新手入门)_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Windows编程基础(新手入门)》由会员分享,可在线阅读,更多相关《Windows编程基础(新手入门)(21页珍藏版)》请在金锄头文库上搜索。

1、.Windows编程基础基于Windows的编程方式有两种。一种是使用Windows的APIApplication Programming Interface,应用程序编程接口函数,通常用C/C+语言按相应的程序框架进行编程。这些程序框架往往就程序应用提供相应的文档、例和软件开发工具包Software Development Kit,SDK,所以这种编程方式有时又称为SDK方式。另一种是使用“封装方式,例如Visual C+的MFC方式,它是将SDK中的绝大多数函数、数据等按C+“类的形式进行封装,并提供相应的应用程序框架和编程操作。事实上,无论是哪种编程方式,人们最关心的容有三个:一是程序入

2、口,二是窗口、资源等的创建和使用,三是键盘、鼠标等所产生的事件或消息的接收和处理。本章就来讨论这些容。1.1 从main到WinMain学习编程往往从简单的例子入手,例如一个C程序常有以下简单的框架代码:#include int main() printf(Hello World!n);/* 输出 */ return 0;/* 指定返回值 */事实上,该程序已包括C程序中最常用的#include指令、必须的程序入口main函数、库函数printf调用和return语句。由于此程序是在早期的DOSDisk Operating System,磁盘操作系统环境的字符模型下运行的,因而printf函数

3、所输出的都是字符流,也就是说,它在屏幕上输出一行文本“Hello World!。在Windows环境下,这里的屏幕就由控制台窗口来兼作,而基于Windows的上述C程序代码框架肯定是有所不同的。特别地,由于目前所在的Windows环境基本上都是32位,所以这里的Windows程序平台就是Win32,Windows编程可直接理解为是Win32编程。1.1.1Windows等价程序等价的Windows程序可以写成:HelloMsg.c#include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szC

4、mdLine, int nCmdShow) MessageBox (NULL, TEXT(Hello, World!), TEXT(Hello), 0) ; return 0 ;在深入剖析上述程序之前,先来看一看在Visual C+ 6.0中的编辑、连接和运行的过程: 图1.1 “每日提示对话框 选择“开始“程序Microsoft Visual Studio 6.0 Microsoft Visual C+ 6.0,运行Visual C+ 6.0。第一次运行时,将显示如图1.1所示的“每日提示对话框。单击“下一条按钮,可看到有关各种操作的提示。如果在“启动时显示提示复选框中单击鼠标,去除复选框的

5、选中标记“,那么下一次运行Visual C+ 6.0,将不再出现此对话框。单击“关闭按钮关闭此对话框,进入Visual C+ 6.0开发环境。 选择“文件“新建菜单命令,打开应用程序向导,显示出“新建对话框,如图1.2所示。选择“工程选项卡,从列表框中选中Win32 ApplicationWin32 应用程序项图1.2中的标记1。 单击“位置编辑框右侧的“浏览按钮图1.2中的标记2,从弹出的“选择目录对话框指定项目所在的文件夹,如图1.3所示图中的数字标记表示最经常的操作次序,下同。单击“确定按钮,退出“选择目录对话框,回到“新建对话框中。需要说明的是,为了便于程序的管理和查找,本书所涉及的程

6、序均放入Visual C+ 6.0的工作文件夹“Visual C+程序中,第1章程序放入子文件夹“第1章中,第2章程序放入子文件夹“第2章,依此类推。 在“新建对话框的“工程名称编辑框图1.2中的标记3中,输入项目名称Ex_HelloMsg,保留“平台下Win32复选框的默认“选中状态,单击“确定按钮进入下一步。 出现Win32 Application向导的“步骤1共1步对话框,从中可选择要创建的应用程序类型:“一个空工程、“一个简单的Win32程序和“一个典型的Hello World! 程序,如图1.4所示。它们的区别在于:“一个空工程仅创建Win32应用程序文件框架,不含任何代码;“一个简

7、单的Win32程序是在“一个空工程基础上添加了程序框架有入口函数、#include指令等;“一个典型的Hello World!程序在“一个简单的Win32程序基础上增加了MessageBox函数调用,用来输出“Hello World!。图1.2 “新建对话框“工程选项卡 图1.3“选择目录对话框 选中“一个空工程,单击“完成按钮,弹出“新建工程信息对话框,如图1.5所示。单击“确定按钮,系统将按前面的选择自动创建此应用程序。图1.4应用程序的向导对话框图1.5“新建工程信息对话框再次选择“文件“新建菜单命令,Visual C+将打开“新建对话框并自动切换到“文件选项卡,如图1.6所示。在左侧的

8、文件类型列表中选中C+ Source FileC+源文件,在右侧的“文件名编辑框中输入“HelloMsg.c或输入“HelloMsg.cpp文件扩展名也可不输入,系统会自动添加cpp扩展名,cpp是C Plus Plus的缩写,是C+的意思。 单击“确定按钮,系统将在创建的Win32项目工程Ex_HelloMsg中创建并添加一个新的文件HelloMsg.c,同时打开该文件窗口。现在可以在HelloMsg.c中输入前面例HelloMsg.c中的代码了。输完后,单击编译工具条上的“生成工具按钮或直接按F7键,系统开始对Ex_HelloMsg项目工程中的文件进行编译、连接,同时在输出窗口中观察出现的

9、容,当出现Ex_HelloMsg.exe-0 error(s), 0 warning(s)表示Ex_HelloMsg.exe可执行文件已经正确无误地生成了。同时也可看到在文档窗口中所有代码的颜色都发生改变,这是Visual C+ 6.0的文本编辑器所具有的语法颜色功能绿色表示注释,蓝色表示关键字等。 单击编译工具条上的“运行工具按钮或直接按Ctrl+F5键,就可以运行刚刚生成的Ex_HelloMsg.exe,结果如图1.7所示。单击“确定按钮,Hello对话框退出。图1.6 创建并添加程序文件图1.7 开发环境和运行结果1.1.2头文件HelloMsg.c是一个#include预处理指令开始,

10、实际上在用C/C+编写的Windows应用程序的头部都可以看到这样的指令:#include 头文件Windows.h是最主要的包含头文件,它还包含了其他一些Windows头文件。例如:windef.h:基本类型定义winbase.h:核函数wingdi.h:用户接口函数winuser.h:图形设备接口函数这些头文件定义了Windows的所有数据类型、函数调用、数据结构和符号常量,它们是Windows应用程序文档中的一个重要部分。1.1.3程序入口函数在C/C+程序中,其入口函数都是main。但在Windows程序中,这个入口函数由WinMain来代替。该函数是在winbase.h中声明的,其原

11、型如下:intWINAPIWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTRlpCmdLine,intnShowCmd);可以看出,这个WinMain函数除了形参名、个数与main函数不同外,类型名也有了新的变化。下面就来分析:WinMain函数被声明成为返回一个int值,同时WinMain函数名前还有WINAPI标识符的修饰。WINAPI是一种“调用约定宏,它在windef.h中有如下定义:#define WINAPI _stdcall所谓“调用约定,就是指程序生成机器码后,函数调用的多个参数是按怎样的次序来传递,同时函数调用结

12、束后堆栈由谁来恢复,以及编译器对函数名的修饰约定等的协议。函数调用约定“协议有许多,其中由WINAPI宏指定的_stdcall是一个常见的协议,容包括:参数从右向左压入堆栈;函数自身修改堆栈;机器码中的函数名前面自动加下划线,而函数后面接符号和参数的字节数。特别地,Visual C+的MFC方式却采用了_cdecl调用约定:参数从右向左压入堆栈;传递参数的存栈由调用者来维护正因为如此可实现变参函数;机器码中的函数名只在前面自动加下划线。WinMain函数的第一个和第二个参数都是HINSTANCE实例句柄类型。HINSTANCE中,H表示Handle,是“句柄的意思。在Windows编程中,句柄

13、是一个应用程序用来识别某些资源、状态、模块等的数字。由于句柄唯一标识着对应的资源、状态、模块等,因而使用句柄就是使调用相应的资源、状态、模块。当应用程序运行多次时,每一次都是应用程序的“实例。由于同一个应用程序的所有实例都共享着应用程序的资源,因而程序通过检查hPrevInstance参数就可确定自身的其他实例是否正在运行。WinMain函数的第三个参数lpCmdLine用来指定程序的命令行,其参数类型为LPSTR。但在HelloMsg.c中,却将其改为PSTR。这两种数据类型都是合法的,也都是指向字符串的指针类型。其中的STR是“STRING,字符串的含义,是指以0结尾的字符串,LP前缀表示

14、“长指针,在Win32中它与“P前缀表示的“指针含义相同。WinMain函数的第四个参数nShowCmd用来指定程序最初显示的方式,它可以是正常、最大化或最小化来显示程序窗口。纵观上述参数和类型名可以发现它们的命名规那么:l C/C+的类型名仍保留其小写,但新的类型都是用大写字母来命名。l 参数名变量名都是采用“匈牙利表示法的命名规那么来定义的。它的主要方法是将变量名前后加上表示“类型和“作用的“前缀小写,而变量名本身由“状态、“属性和“含义等几个部分组成,每一个部分的名称可以是全称,也可以是缩写,但通常只有第一个字母是大写。例如,hPrevInstance那么是由前缀h表示“句柄类型+状态P

15、rev表示“以前的+属性Instance表示“实例组成的。1.1.4MessageBox函数MessageBox是一个Win32 API函数,用来弹出一个对话框窗口,显示短信息。该函数具有以下原型:int MessageBox( HWNDhWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINTuType);其中,第一个参数hWnd用来指定父窗口句柄,即对话框所在的窗口句柄。第二、三个参数分别用来指定显示的消息容lpText和对话框窗口的标题lpCaption,最后一个参数用来指定在对话框中显示的预定义的按钮和图标标识,它们是在winuser.h定义的一组以MB_开始的常数组合。例如,下面是在HelloMsg.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号