资源描述
WindowsWindows程序设计系列程序设计系列 基础知识基础知识 作者:李星华作者:李星华 Windows程序设计程序设计-基础教程基础教程 纲目纲目 代码规范代码规范 1 入口函数入口函数 2 Win32 API简介简介 3 MSDN的应用的应用 4 2 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范 3 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范 良好的编程风格是提高程序可靠性非常重要的手良好的编程风格是提高程序可靠性非常重要的手段,也是大型项目多人合作开发的技术基础。通段,也是大型项目多人合作开发的技术基础。通过规范定义来避免不好的编程风格,增强程序的过规范定义来避免不好的编程风格,增强程序的可读性,便于自己和他人理解。代码规范,针对可读性,便于自己和他人理解。代码规范,针对于不同的企业来说各不相同,追其根源,都源于于不同的企业来说各不相同,追其根源,都源于匈牙利命名法。匈牙利命名法。 4 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-变量命名变量命名 变量命名变量命名原则:变量名属性类型对象描述原则:变量名属性类型对象描述,其中每一对象的名称都要求有明确含义,可以,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非易记忆容易理解的原则。保证名字的连贯性是非常重要的。常重要的。 5 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-变量命名变量命名 6 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-变量命名变量命名 命名必须具有实际的意义,形式为命名必须具有实际的意义,形式为xMaxValue,x由数据类型或属性部分组成(如果由数据类型或属性部分组成(如果x为整型,为整型,变量命名为:变量命名为:iMaxValue),),Max、Value表表示连续意义字符串(由描述部分确定),如果连示连续意义字符串(由描述部分确定),如果连续意义字符串有多个,则每个具有意义的字符串续意义字符串有多个,则每个具有意义的字符串,首字母需大写(像,首字母需大写(像iMaxValue中的“中的“M”与与“V”)。)。 m_ 类成员变量类成员变量 m_iVal , m_bFlag g_ 全局变量全局变量 g_iMsg , g_bFlag s_ 静态变量静态变量 s_iCount, s_bFlag 局部变量中可采用如下几个通用变量:局部变量中可采用如下几个通用变量:iTemp ,iResult,i,j(一般用于循环变量)。(一般用于循环变量)。 7 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-常量命名和宏定义常量命名和宏定义 常量和宏定义必须具有一定的实际意义:常量和宏定义必须具有一定的实际意义: 常量和宏定义必须全部以大写字母来撰写,中间常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一条定义可根据意义的连续性用下划线连接,每一条定义的右侧必须在的右侧必须在24个位置处有一简单的注释,说个位置处有一简单的注释,说明其作用;明其作用; 资源名字定义格式:资源名字定义格式: 菜单:菜单: IDM_XX或者或者CM_XX 位图:位图: IDB_XX 对话框:对话框: IDD_XX 字符串:字符串: IDS_XX 8 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-函数命名函数命名 第一个字母必须使用大写字母,要求用大小写字第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线间隔,母组合规范函数命名,必要时可用下划线间隔,示例如下:示例如下: int GetValue(); void* Word_GetApp(); 9 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-结构体命结构体命 结构体类型命名必须全部用大写字母,原则上前结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用大小写面以下划线开始;结构体变量命名必须用大小写字母组合,第一个字母必须使用大写字母,必要字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。全局数据定义只需注意其用时可用下划线间隔。全局数据定义只需注意其用途。途。 10 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-结构体命结构体命 typedef struct char szProductName20; char szAuthor20; char szReleaseDate16; char szVersion10; unsigned long MaxTables; unsigned long UsedTables; DBS_DATABASE; DBS_DATABASE GdataBase; 11 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-控件的命名控件的命名 用小写前缀表示类别:用小写前缀表示类别: fm 窗口窗口 cmd 按钮按钮 cob combo,下拉式列表框,下拉式列表框 txt 文本输入框文本输入框 lab labal,标签,标签 img image,图象,图象 pic picture grd Grid,网格,网格 scr 滚动条滚动条 lst 列表框列表框 frm fram 12 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-文件头的注释模板文件头的注释模板 /* / FILE : Demo_09.h /* / POWER : Copyright (c) 2012 for XXX. / AUTHOR : 2012-2-7 8:37 Create by lixinghua for functions. / VERSION : V1.0.0.1 / NOTE : 此文件中含有此文件中含有XXX类,各类之间的主次关系,主要功能,类,各类之间的主次关系,主要功能, / 或潜在的问题。以及全局变量或函数或潜在的问题。以及全局变量或函数 的作用。的作用。 /* / 13 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-文件头的注释模板文件头的注释模板 每行字符不要超出每行字符不要超出80个字符(“个字符(“/”加上“”加上“*”的总长度为的总长度为80个字符;个字符; “FILE”为文件名;”为文件名; “POWER”为版权信息,为固定模式无需修改”为版权信息,为固定模式无需修改; “AUTHOR”为作者信息,需要时间的写法;”为作者信息,需要时间的写法; “VERSION”为版本信息,版本说明见“引用”为版本信息,版本说明见“引用四四: 关于版本控制”;关于版本控制”; “NOTE”为本文件中存在的程序功能进行说明”为本文件中存在的程序功能进行说明。 14 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-类的注释模板类的注释模板 /= / NAME : XX类类 /= / LIST : void / AUTHOR : 2012-2-6 11:18 Create by lixinghua for functions. / VERSION : V1.0.0.1 / NOTE : 类的使用说明,即主要对外接口类的使用说明,即主要对外接口(函数函数)以及主要功能和潜在问题。以及主要功能和潜在问题。 /= / 15 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-类的注释模板类的注释模板 每行字符不要超出每行字符不要超出80个字符(“个字符(“/”加上“”加上“=”的总长度为的总长度为80个字符;个字符; “NAME”为类的名称;”为类的名称; “LIST”为实现的内部方法(函数)列表,并”为实现的内部方法(函数)列表,并进行说明;进行说明; “AUTHOR”为作者信息,需要时间的写法;”为作者信息,需要时间的写法; “VERSION”为版本信息,版本说明见“引用”为版本信息,版本说明见“引用四四: 关于版本控制”;关于版本控制”; “NOTE”为本文件中存在的程序功能进行说明”为本文件中存在的程序功能进行说明。 16 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-函数头的注释模板函数头的注释模板 /- / FUNC : XX函数函数 /- / IN : 变量变量1,变量,变量1功能的说明;功能的说明; / 变量变量2,变量,变量2功能的说明;功能的说明; / 变量变量n,变量,变量n功能的说明;功能的说明; / OUT : void / RETURN : void / AUTHOR : 2012-2-6 11:18 Create by lixinghua for functions. / NOTE : 此函数实现了此函数实现了XX功能,其中调用了功能,其中调用了XX函数。函数。 /- / 17 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-函数头的注释模板函数头的注释模板 每行字符不要超出每行字符不要超出80个字符(“个字符(“/”加上“”加上“-”的总长度是的总长度是80个字符;个字符; “FUNC”为函数的名称;”为函数的名称; “IN”为输入的参数;”为输入的参数; “OUT”为在函数内部的输出信息内容,即函数”为在函数内部的输出信息内容,即函数参数作为返回值的说明;参数作为返回值的说明; “RETURN”函数的返回值(如:函数成功返”函数的返回值(如:函数成功返回回TRUE,否则返回,否则返回FALSE。);。); “AUTHOR”为作者信息,需要时间的写法;”为作者信息,需要时间的写法; “NOTE”为函数功能的描述,其中包括:功”为函数功能的描述,其中包括:功能描述、全局变量描述以及调用模块。能描述、全局变量描述以及调用模块。 18 Windows程序设计程序设计-基础教程基础教程 代码规范代码规范-关于版本控制关于版本控制 版版 本本 : V1.0.0.1 其中其中 V1.0.0.1 红色红色1表示,每修复一处表示,每修复一处Bug,在原有,在原有数值上累加一次。数值上累加一次。 其中其中 V1.0.0.1 红色红色0表示,添加或删除掉某些功能表示,添加或删除掉某些功能(函函数或类数或类),在原有数值上累加一次。,在原有数值上累加一次。 其中其中 V1.0.0.1 红色红色0表示,每维护一次程序,在原有表示,每维护一次程序,在原有数值上累加一次。数值上累加一次。 其中其中 V1.0.0.1 红色红色1表示,每一次系统整体的更新,表示,每一次系统整体的更新,包括整个功能甚至需求的变化更新,在原有数值上累包括整个功能甚至需求的变化更新,在原有数值上累加一次。加一次。 例如例如 V2.20.15.80 表示整体需求或框架升级过表示整体需求或框架升级过2次,维护过次,维护过20次,共添次,共添加或删除功能加或删除功能15次,累计修改次,累计修改80次次Bug。 19 Windows程序设计程序设计-基础教程基础教程 入口函数入口函数 20 Windows 数据类型数据类型 C C 数据类型数据类型 Windows Windows 类型类型 charchar CHARCHAR unsigned charunsigned char BYTEBYTE shortshort SHORTSHORT unsigned shortunsigned short WORD WORD intint INTINT longlong LONGLONG unsigned longunsigned long DWORDDWORD 21 Windows 数据类型数据类型 C C 数据类型数据类型 Windows Windows 类型类型 char *char * LPSTR, PSTRLPSTR, PSTR const char *const char * LPCSTR, PCSTRLPCSTR, PCSTR voidvoid VOIDVOID void *void * LPVOIDLPVOID 22 Windows程序设计程序设计-基础教程基础教程 HINSTANCE HWND HANDLE HPEN HBRUSH HBITMAP HFONT HDC HRESOURCE HCURSOR Windows Windows 新增数据类型:句柄类型新增数据类型:句柄类型 * * 23 Windows程序设计程序设计-基础教程基础教程 RECT =struct _RECTint left,int top,int right,int bottom POINT=struct _POINTint x,int y SIZE=struct _SIZEint cx,int cy Windows Windows 新增数据类型:结构体新增数据类型:结构体 * * 24 Windows程序设计程序设计-基础教程基础教程 C语言入口函数语言入口函数 #include int main() printf(“Hello World”); 25 Windows程序设计程序设计-基础教程基础教程 C语言入口函数语言入口函数 如下程序会有什么样的结果?如下程序会有什么样的结果? #include int main() for(int i = 0; i argc; +i) printf(“%s”, argvi); 26 Windows程序设计程序设计-基础教程基础教程 C语言入口函数语言入口函数 void main() int main(int argc, char* argv) argc 作用是什么?作用是什么? Argv 作用是什么?作用是什么? argc是命令行总的参数个数;是命令行总的参数个数; argv是是argc个参数,其中第个参数,其中第0个参数是程序个参数是程序的全名,以后的参数是命令行后面跟的用户输入的全名,以后的参数是命令行后面跟的用户输入的参数。的参数。 27 Windows程序设计程序设计-基础教程基础教程 C语言入口函数语言入口函数 例如例如 dir /w /p c:windows argc = 4 argv0 = dir argv1 = /w argv2 = /p argv3 = c:windows 28 Windows程序设计程序设计-基础教程基础教程 Windows 入口函数入口函数 int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) MessageBox(NULL,”你好你好”,”警告警告”,MB_OK); 29 Windows程序设计程序设计-基础教程基础教程 APIENTRY 编译器用来识别程序入口函数的标志。编译器用来识别程序入口函数的标志。 30 Windows程序设计程序设计-基础教程基础教程 HINSTANCE-实例句柄实例句柄 句柄句柄,是整个,是整个windows编程的基础,一个句柄编程的基础,一个句柄是指使用的一个唯一的整数值,是指一个四字节是指使用的一个唯一的整数值,是指一个四字节长的数值,用于标志应用程序中的不同对象和同长的数值,用于标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息。应用程序能够通过句柄访问相应的对象的信息。 句柄不是一个指针,程序不能利用它句柄来直接句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。阅读文件中的信息。 31 Windows程序设计程序设计-基础教程基础教程 HINSTANCE-实例句柄实例句柄 句柄在句柄在Windows 中使用非常频繁,它通常是中使用非常频繁,它通常是一个一个32位的整数,代表着一个具体对象。位的整数,代表着一个具体对象。 句柄就像每位同学的学号一样,唯一标识着窗口。句柄就像每位同学的学号一样,唯一标识着窗口。 32 Windows程序设计程序设计-基础教程基础教程 HINSTANCE-实例句柄实例句柄 HINSTANCE hInstance 进程的实例句柄,在本程序中,唯一标识进程。 HINSTANCE hPrevInstance 指向应用程序的前一个进程句柄,在32操作系统该参数为NULL,该参数仅仅被用于16位操作系统。 33 Windows程序设计程序设计-基础教程基础教程 命令行参数命令行参数 LPSTR lpCmdLine 命令行缓冲区,不包括程序的名字。 不难猜出,如下代码输出什么吧!?不难猜出,如下代码输出什么吧!? MessageBox(NULL, lpCmdLine, “温馨提示温馨提示”, MB_OK); 34 Windows程序设计程序设计-基础教程基础教程 窗口显示状态窗口显示状态 int nCmdShow 窗口是否显示标志 SW_HIDE SW_SHOW 35 Windows程序设计程序设计-基础教程基础教程 参数意义参数意义 第一个参数第一个参数hInstance是一个唯一的数值或句是一个唯一的数值或句柄。它与当前程序相关。柄。它与当前程序相关。 第二个参数第二个参数hPrevInstance只对只对 16 位位 Windows 是重要的。而在是重要的。而在 Windows 95 和和 Windows NT 中这两个参数是没有意义的中这两个参数是没有意义的 第三个参数第三个参数lpCmdLine是一个字符串,它包含是一个字符串,它包含了传给程序的任何参数。这个参数的类型了传给程序的任何参数。这个参数的类型 LPSTR 是是 Windows 中一种写法,表示一个中一种写法,表示一个指向字符串的指向字符串的 32 位指针。位指针。 第四个参数第四个参数nCmdShow指明程序开始运行的状指明程序开始运行的状态是正常状态还是最大化状态或最小化状态。态是正常状态还是最大化状态或最小化状态。 36 Windows程序设计程序设计-基础教程基础教程 Windows API简介简介 37 Windows程序设计程序设计-基础教程基础教程 什么是什么是API API:Application Programming Interface 操作系统提供给开发者的应用程序编程接口。操作系统提供给开发者的应用程序编程接口。 用户使用该接口可以调动操作系统资源,实现自用户使用该接口可以调动操作系统资源,实现自己的应用程序的功能。己的应用程序的功能。 使用时:必须包含使用时:必须包含Windows.h头文件。头文件。 38 Windows程序设计程序设计-基础教程基础教程 API简介简介 39 应用程序应用程序APIAPI接口接口操作命令操作命令操作系统操作系统硬件系统硬件系统Windows程序设计程序设计-基础教程基础教程 API简介简介 Windows API是在安装完操作系统之后,就是在安装完操作系统之后,就已经存在了,它是以已经存在了,它是以DLL文件的形式存在。常用文件的形式存在。常用的的Win32函数库所需要的函数库所需要的DLL文件如下:文件如下: GDI32.DLL:屏幕显示及打印功能的函数集;:屏幕显示及打印功能的函数集; USER32.DLL:鼠标、键盘、通信端口、声音、时钟:鼠标、键盘、通信端口、声音、时钟功能的函数集;功能的函数集; KERNEL32.DLL:文件及内存管理(核心部分)功能:文件及内存管理(核心部分)功能的函数集;的函数集; MPR.DLL:Windows32网络接口库;网络接口库; ADVAPI32.DLL:Windows32、ADVAPI32核心部件核心部件 40 API简介 Windows程序设计程序设计-基础教程基础教程 MSDN的应用的应用 41 Windows程序设计程序设计-基础教程基础教程 MSDN MSDN 的全称是的全称是 Microsoft Developer Network,是微软公司面向软件开发者的一种,是微软公司面向软件开发者的一种信息服务。它是一本非常全面的开发手册,也是信息服务。它是一本非常全面的开发手册,也是一本发发宝典。一本发发宝典。 42 Windows程序设计程序设计-基础教程基础教程 MSDN 43 43 Windows程序设计程序设计-基础教程基础教程 MSDN MSDN文档中包含所有的文档中包含所有的API的函数原型、使的函数原型、使用方法介绍以及相应的代码示例,它是一本超大用方法介绍以及相应的代码示例,它是一本超大集合的帮助文档,也是用户手册,同时也是一本集合的帮助文档,也是用户手册,同时也是一本非常全面的书籍。非常全面的书籍。 44 Windows程序设计程序设计-基础教程基础教程 API 举例举例 int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); 作用:作用: 弹出警告框。弹出警告框。 MessageBox(0,”你好你好”,”警告警告”,MB_OK); 45 Windows程序设计程序设计-基础教程基础教程 作业作业 1、根据你的理解,什么是代码规范?、根据你的理解,什么是代码规范? 2、分别写出、分别写出C以及以及Windows的入口函数,并的入口函数,并说明各参数的含义。说明各参数的含义。 3、什么是、什么是API? 46 人文改变历史,人文改变历史, 科技创造未来!科技创造未来! 47
展开阅读全文