欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

孙鑫VC++LESSON1:Windows程序内部运行原理

发布时间:2024/1/1 c/c++ 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 孙鑫VC++LESSON1:Windows程序内部运行原理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

视频链接:https://www.bilibili.com/video/BV1Ts411f7fw/?spm_id_from=333.337.search-card.all.click&vd_source=04d791790ccb453dc9e7113022339213

Windows程序内部运行原理

  Windows的程序设计是一种事件驱动的程序设计模式,主要是基于消息的,当用户想完成某种功能时会调用操作系统的某种支持,然后操作系统将用户的需要包装成消息,并投递到消息队列当中,最后应用程序从消息队列中取走消息并进行响应。

  箭头①表示操作系统可以对输入输出设备进行控制,比如声卡、音响;箭头②表示操作系统能识别输入输出设备的状态,包括鼠标的位置等。我们所关心的是应用程序和操作系统的交互关系。


  API正如其语义一样,他已经成为一种被广泛使用的专业术语,如果说某个系统、设备提供给某种应用程序,对其进行编程操作的函数类、组件等的集合,那么就称作该系统的API。比如:购买语音卡附带的开发包,他所提供的开发包的一些函数的集合就叫做语音卡的API。

MSG结构体


  MSDN是微软提供给我们应用程序开发人员的一个在线帮助系统,包含了微软所有的开发语言和开发工具的帮助文件。开发时,要安装一个MSDN以便于查找资料。https://docs.microsoft.com/zh-cn/cpp/mfc/reference/wm-message-handlers-d-e?view=msvc-170

  HWND:窗口句柄;UINT在c语言中为unsigned int无符号整型,对于message定义了许多宏来代表相应的消息,他以WM_开头,比如代表按下鼠标左键的宏为:WM_LBUTTONDOWN;WPARAM和LPARAM都是整型,WPARAM指示了消息的一个附加信息,LPARAM也是指示了消息的一个附加信息,比如我们在按下一个字母按键时,会受到一个WM_CHAR消息,但是我们并不知道按下的是哪一个按键,这是就会把这个字母的ASCII码放到附加参数WPARAM中

  那么既然WPARAM和LPARAM都是两个整形,那么为什么还要产生这两个新的数据类型呢?
  比如他人写的程序拿给你看,定义了X、Y,你并不知道代表的具体意义,这样一看到WPARAM和LPARAM就知道这是一个消息的附加参数。

  DWORD中WORD是16位整数,D代表double,表示32位整数,用来指示这个消息被投递时的时间;POINT是一个结构体,定义了一个点x坐标一个点y坐标,pt指示了当消息被投递时光标所在的一个位置。
  对于每一个应用程序,操作系统都会给它建立一个消息队列,其实是一个先进先出的缓冲区,通常是某种变量类型的数组,消息队列里的每一个元素都是一条消息。应用程序取走队列的第一条消息,在得到消息后就要对消息进行处理,这就是消息响应(通过编码实现,过程中也可能会调用其它的API)。

WinMain函数

  我们再写windows的c语言程序时都会先写一个mian函数。

  HINSTANCE:应用程序实例句柄,每个运行中的应用程序都是一个实例,如果同一个应用打开好几个,那么每一个就需要一个标识,HINSTANCE就是用来存放这种标识的数据类型。bInstance用来指示当前正在运行的实例句柄,bPrevInstance用来指先前实例的一个句柄(win32里面总是为空);LPSTR:LP代表长指针,STR代表指针,标识一个指向字符串首地址的指针,相当于char*,lpCmdLine是命令行参数,(argc用来指明命令行参数的个数,margv是一个指针数组,用来存放命令行参数);nCmdShow用来显示状态(当前为最大化还是最小化)。
  这个Winmain函数是一个入口点函数 ,这个函数是由操作系统去调用的,不是由我们去调用的,当操作系统启动我们的程序的时候,他会给我们运行当中的程序分配一个实例号,通过这个参数就传递进来了,如果说启动程序的时候传递了一个命令行参数,那么操作系统会将这个参数放到l第三个参数pCmdLine中传递进来,这些参数都是由操作系统赋值。
  既然我们现在开发的程序都是窗口应用 程序,那么


  style:窗口类的类型(其中有水平重画、垂直重画等)


总结

以上是生活随笔为你收集整理的孙鑫VC++LESSON1:Windows程序内部运行原理的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。