windows c++开发

一  安装 离线MSDN 

MSDN:microsoft developer network ,微软向开发人员提供的一套帮助系统。

运行vs 2017  -》运行  vs studio installer ->点击修改-》单个组件-》代码工具-》help viewer->

安装完后,启动vs 在“帮助”菜单,“设置帮助首选项”-》“在帮助查看器中启动”-》

按F1可以调出帮助。

二 windows 程序内部运行机制

2.1  win api 就是windows 就是windows 系统提供的,以便用户开发windows 的应用程序。 主要的windows 函数都包含在  Windows.h里面。

2.2 什么是win32 SDK?

答:windows 32位平台下的软件开发包,包括api函数 、帮助文档、辅助工具等。

2.3  windows 系统和用程序相互调用是通过传递消息来实现的,不同于传统的dos,windows 是基于事件驱动的程序设计模式。比如鼠标按键消息。

2.4 常用前缀:

WM : windows message   如 WM_LBUTTONDOWN

2.5 消息队列

每个windows 应用程序在开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息。例如,当我们按下鼠标左键的时候,将会产生WM_LBUTTONDOWN 消息,系统会将这个消息放到窗口所属的应用程序的消息队列中,等待应用程序的处理。windows 将产生的消息依次放到消息队列中,而应用程序则通过一个消息循环不断的从消息队列中取出消息,并进行响应,这种消息机制就是windows 程序运行的机制。

2.6  进队消息和不进队消息。

不管进队还是不进队都由系统调用窗口过程函数对消息进行处理。

2.7 windows 的窗口过程函数调用

针对windows 的消息处理机制,窗口过程函数被调用的过程如下:

(1). 在设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWndProc成员变量。

(2)调用RegisterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址。

(3) 当应用程序接收到某一窗口的消息时,调用DispatchMessage(&msg)将消息回传给系统。系统则利用先前注册窗口类时得到的函数指针,调用窗口过程函数对消息进行处理。一个windows 程序可以包含多个窗口过程函数,一个窗口过程总是与某一个特定的窗口类相关联,(通过WNDCLASS结构体中的lpfnWndProc成员变量指定),基于该窗口类创建的窗口使用同一个窗口过程。

lpfnWndProc 成员变量的类型是WNDPROC ,我们在vs 里面的“转到定义”功能,可以看到WNDPROC的定义:

typedef  LRESULT (CALLBACK *WNDPROC)(HWND,WPARAM,LPARAM);

LRESULT :long   CALLBACK:_stdcall

2.8 _stdcall 与 _cdecl  调用

在函数调用过程中,会使用栈。_stdcall 与 _cdecl 是两种不同的函数调用约定,定义了函数参数入栈的顺序,由调用函数还是被调用函数将参数弹出栈,以及产生函数修饰名的方法。对于参数个数可变的函数,如printf ,使用的是_cdecl 调用约定,win32 的API函数都遵循_stdcall调用约定。在vs中默认编译选项是_cdecl,对于那些需要_stdcall 调用约定的函数,在声明时必须显示的加上 _stdcall 。在windows 程序中,回调函数必须遵循_stdcall 调用约定,所以我们在声明回调时要使用CALLBACK .使用CALLBACK而不是_stdcall的原因是为了告诉我们这是一个回调函数。

2.9 windows 窗口的创建

设计->注册->创建->显示及更新   消息循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值