随笔写写06(study.win32.personal)

我记得第一个笔记就是win的 当时想写脚本,所以搞了个鼠标移动啥,当时啥也不懂,直接莽上去的,本着能用就行的心态,这次是准备好好学习一下,想写个程序。
microsoft的帮助:MSDN,我告诉你
API
应用程序接口,
某个系统或某个设备提供给某种应用程序对其进行编程操作的函数,类,组件等的集合,就称作该系统的API
(就是个工具,知道怎么调用就好,技术细节看开发者愿不愿意告诉你)
win运行的方式
(决定你要如何思考)
不同于传统的DOS的程序方法,win是一种事件驱动的程序模式,主要基于消息

当用户需要完成某个功能时会调用操作系统的支持,操作系统会将需要包装成消息,投递到消息队列中,应用程序会从消息队列取走消息并响应。
(个人感觉这是 分离了操作和程序间的直接联系)
消息与消息队列
先说明操作系统与应用程序的关系
操作系统(神经)感知事件并发送消息
应用程序(大脑)接收消息并决定要干什么
(神经,可以感知事件但无法做出相应;大脑可以相应。理解就好)

*消息机制(Message)
MSG结构体

typedef struct tagMSG {     // msg 
           HWND   hwnd;
           /*代表所属的窗口*/ 
           UINT   message;
           /*消息代号。
           原本是数字,由于不便于记忆,已经定义为宏了(WM_XXXX)*/
           WPARAM wParam;
           LPARAM lParam;
           /*上面两是对于消息的补充
           例如:message表示从键盘收到了字符
           这俩就是说收到了啥的*/
           DWORD time;/*时间*/
           POINT pt;/*鼠标位置*/

} MSG;

消息队列(Queue)
每个win程序都有一个消息队列,先进先出的缓冲区,通常是数组
程序取出消息然后响应
句柄
句柄就是一种标识号,标识了如图标,光标,窗口,应用程序的实例(已加载到内存运行中的程序)等等,任何资源。
图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。
每个窗口的唯一标识号就是窗口句柄。
WinMain
与以前写的main()函数作用一致(入口点)。
程序的四个大致步骤:

1.  WinMain函数的定义;
2.  创建一个窗口;
3.  进行消息循环;
4.  完成回调函数;

该函数接受四个参数,这些参数都是系统调用WinMain函数时,传递应用程序的。

int WINAPI WinMain( 
            HINSTANCE hInstance,
            /*当前实例的句柄(操作系统给的)*/
            HINSTANCE hPrevInstance, 
            /*是否是长子
            例:当前程序只有一份实例可以运行时写入
            if(hPrevInstance)return 0;
            (假定NULL==0成立)*/
            LPSTR lpCmdLine,
            /*
            使用命令行时传递参数时用的
            一个字符串
            含有传递给应用程序的参数串
            不包含应用程序名本身
            传递时直接复制(不会对特殊字符进行操作)
            如有疑问,看下面的超链接
            */             
            int nCmdShow
            /*一个将要传递给 ShowWindow()的整数
            指定的程序的窗口应该如何显示,如最大化,最小化,隐藏等*/ 
            );

WinMain中的lpCmdLine参数


先这些了剩下的下次写。
资料:Windows程序内部运行原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值