第2课Windows运行原理.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2课:Windows运行原理 如何学好VC1、需要有好的C/C++基础。正所谓“磨刀不误砍柴工”,最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写。这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制,窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数。3、一定要理解MFC中消息映射的作用。4、训练自己在编写代码时不使用参考书而是使用Help Online。5、记住一些常用的消息名称和参数的意义。6、学会看别人的代码。7、多看书,少买书,买书前一定要慎重。8、闲下来的时候就看参考书。#include stdio.h int main() { printf(Hello World!\n); /* 输出 */ return 0; /* 指定返回值 */ } Windows等价程序 #include windows.h int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nCmdShow) { MessageBox (NULL, TEXT(Hello, World!), TEXT(Hello), 0) ; return 0 ; } 头文件Windows.h是最主要的包含头文件,它还包含了其他一些Windows头文件。例如:windef.h: 基本类型定义 winbase.h: 内核函数 wingdi.h: 用户接口函数 winuser.h: 图形设备接口函数 在C/C++程序中,其入口函数都是main。但在Windows程序中,这个入口函数由WinMain来代替。该函数是在winbase.h中声明的,其原型如下: Int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nShowCmd); ① WinMain函数被声明成为返回一个int值,同时WinMain函数名前还有WINAPI标识符的修饰。WINAPI是一种“调用约定”宏,它在windef.h中有如下定义: #define WINAPI _ _stdcall 所谓“调用约定”,就是指程序生成机器码后,函数调用的多个参数是按怎样的次 序来传递,同时函数调用结束后堆栈由谁来恢复,以及编译器对函数名的修饰约定等的 协议。 函数调用约定“协议”有许多,其中由WINAPI宏指定的_ _stdcall是一个常见的协议,内容包括:参数从右向左压入堆栈;函数自身修改堆栈;机器码中的函数名前面自动加下划线,而函数后面接@符号和参数的字节数。 特别地,Visual C++的MFC方式却采用了_ _cdecl调用约定:参数从右向左压入堆栈;传递参数的内存栈由调用者来维护(正因为如此可实现变参函数);机器码中的函数名只在前面自动加下划线。 ② WinMain函数的第一个和第二个参数都是HINSTANCE(实例句柄)类型。HINSTANCE中,H表示Handle,是“句柄”的意思。在Windows编程中,句柄是一个应用程序用来识别某些资源、状态、模块等的数字。由于句柄唯一标识着对应的资源、状态、模块等,因而使用句柄就是使(调)用相应的资源、状态、模块。 当应用程序运行多次时,每一次都是应用程序的“实例”。由于同一个应用程序的所有实例都共享着应用程序的资源,因而程序通过检查hPrevInstance参数就可确定自身的其他实例是否正在运行。 ③ WinMain函数的第三个参数lpCmdLine用来指定程序的命令行,其参数类型为LPSTR。但在HelloMsg.c中,却将其改为PSTR。这两种数据类型都是合法的,也都是指向字符串的指针类型。其中的STR是“STRING,字符串”的含义,是指以\0结尾的字符串,LP前缀表示“长指针”,在Win32中它与“P”前缀表示的“指针”含义相同。 ④ WinMain函数的第四个参数nShowCmd用来指定程序最初显示的方式,它可以是正常、最大化或最小化来显示程序窗口。 纵观上述参数和类型名可以发现它们的命名规则: ? C/C++的类型名仍保留其小写,但新的类型都是用大写字母来命名。 ? 参数名

文档评论(0)

nxuy179 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档