宽字节

1、什么是ASCII码?

一张存储了字母大小写与一些符号的表,用一个字节表示,最高位不使用,最多只能存储128个符号或字母,但世界上有很多种语言,这远远不够

2、什么是扩展ASCII码?

把最高位也拿来使用,但还是不够

3、什么是GB2312?

天朝专家舍弃了扩展ASCII码,新增一个字节,当两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节

4、这种编码存在什么问题?

乱码,其他国家可能也在用,同样的二进制可能对他们来说是其他语言

5、UNICODE的产生

Unicode只有一个字符集(一张表)

Unicode中的每个字符都是16位宽而不是8位宽

是国际上有个组织,为各个国家设计的一张大表,避免重复,乱码

事件 消息

Windows中的事件是一个“动作”,这个动作可能是用户操作应用程序产生的,也可能是Windows自己产生的.

而消息,就是用来描述这些“动作”的,比如:

这个动作是什么时候产生的?

哪个应用程序产生的?

在什么位置产生的?

等等。。。

Windows为了能够准确的描述这些信息,提供了一个结构体:MSG,该结构体里面记录的事件的详细信息.

typedef struct tagMSG {

HWND   hwnd;

UINT   message;

WPARAM wParam;

LPARAM lParam;

DWORD  time;

POINT  pt;

} MSG, *PMSG;

说明

1、hwnd:

表示消息所属的窗口

一个消息一般都是与某个窗口相关联的

在Windows中 HWND类型的变量通常用来标识窗口。

2、message

在Windows中,消息是由一个数值来表示的

但是由于数值不便于记忆,所以Windows将消息对应的数值定义为WM_XXX宏(WM == Window Message)

鼠标左键按下 WM_LBUTTONDOWN 键盘按下 WM_KEYDOWN

3、wParam 和 lParam

32位消息的特定附加信息,具体表示什么处决于message

4、time

消息创建时的时间

5、消息创建时的鼠标位置

按钮的本质:窗口

按钮的WNDCLASS不是我们定义的,是系统预定义好的。如果我们想知道,系统预定义的WNDCLASS都包含什么样的信息

怎么做?

TCHAR szBuffer[0x20];

GetClassName(hwndPushButton,szBuffer,0x20);

WNDCLASS wc;

GetClassInfo(hAppInstance,szBuffer,&wc);

OutputDebugStringF("-->%s\n",wc.lpszClassName);

OutputDebugStringF("-->%x\n",wc.lpfnWndProc);

总结:

1、按钮是一种特殊的窗体,并不需要提供单独的窗口回调函数.

2、当按钮有事件产生时,会给父窗口消息处理程序发送一个WM_COMMAND消息

回调函数(消息处理函数)的结构

LRESULT CALLBACK WindowProc(

IN  HWND hwnd,

IN  UINT uMsg,

IN  WPARAM wParam,

IN  LPARAM lParam

);

回调函数的堆栈

 
 
 

返回地址(ESP)

hwnd

uMsg

wParam

lParam

内核对象

windows一些知识的更多相关文章

  1. Windows通用知识讲解二

    NMAKE Makefile是一个解释执行的工具,根据Makefile文件中的定义,编译和链接程序,最终生成文件. Makefile(Windows下是.mak文件) 定义编译和链接等操作的脚本文件( ...

  2. Windows通用知识讲解一

    Window应用程序的类型 --控制台程序Console DOS程序,本身没有窗口,通过Windows DOS窗口执行 --窗口程序 拥有自己的窗口,可以与用户交互 --库程序 存放代码.数据的程序, ...

  3. windows基础知识(win7)

    右击 显示: 对设备进行管理: 在计算机属性中,开远程连接 控制面板: 控制面板下的操作中心: 控制面板下的管理工具: 控制面板下的默认程序: 控制面板下的日期时间: 控制面板下的鼠标: 控制面板下的 ...

  4. WIndows 相关知识

    Windows服务 图解WinXP局域网共享设置步骤 Win10如何搭建FTP服务器以实现快速传输文件 强大工具psexec工具用法简介 BIOS和CMOS的区别 系统CLSID简介和小技巧

  5. windows 小知识---windows下生成公钥和私钥

    首先Windows操作系统需要安装git. 安装完成后,再到任意的文件夹内,点击右键.选择git bash here 打开之后,输入ssh-keygen,一路按enter键. 全部结束后,再到C:\U ...

  6. Windows Socket知识总结

     目录 0 理解Socket 1 WinSock API 2 阻塞socket 3 非阻塞Socket 4 套接字IO模型  4.1 套接字IO模型:select(选择)  4.2 套接字IO模型:W ...

  7. C# windows服务知识集锦

    最近公司项目,本人也是刚接触windows服务,现在把这两天上网学习的一些资料拿出来与大家分享. 1).关于windows服务安装包的制作和自动启动服务 http://blog.csdn.net/re ...

  8. Windows 基础知识2

    1.进程通信的几种方式 管道:匿名,命名 信号 报文 共享内存 信号量:主要作为进程和同一进程的线程同步的方式 套接字 2.线程通信的几种方式: 临界区,信号量.互斥量.事件. 信号量:它允许多个线程 ...

  9. Windows系统小知识

    前言 本文写作于Window10发布后的2015-08-01,新系统发布后我做了新系统的小白鼠,所以写此文以作记录. WIN10各版本下载地址:http://www.ithome.com/html/w ...

随机推荐

  1. Electron All In One

    Electron All In One desktop app https://www.electronjs.org/docs/api/browser-window BrowserWindow 创建和 ...

  2. GitHub Actions

    GitHub Actions CI/CD & testing https://github.com/features/actions refs xgqfrms 2012-2020 www.cn ...

  3. js中国标准时间转换成datetime格式

    var format = function (time, format) { var t = new Date(time); var tf = function (i) { return (i < ...

  4. The last packet successfully received from the server was 49,061,696 millise

    解决连接:https://blog.csdn.net/pandajava/article/details/41946251

  5. 音视频+ffmpeg

    雷霄骅:https://me.csdn.net/leixiaohua1020 致敬! 1.[总结]视音频编解码技术零基础学习方法 https://blog.csdn.net/leixiaohua102 ...

  6. Django中文文档-模型Models(二):Meta选项、模型属性、模型方法

    元数据(Meta)选项 使用内部的class Meta 定义模型的元数据,例如: from django.db import models class Ox(models.Model): horn_l ...

  7. 弹性盒布局详解(display: flex;)

    弹性盒布局详解 弹性盒介绍 弹性盒的CSS属性 开启弹性盒 弹性容器的CSS属性 flex-direction设置弹性元素在弹性容器中的排列方向 主轴与侧轴(副轴) flex-wrap设置弹性容器空间 ...

  8. fastjson 漏洞利用 命令执行

    目录 1. 准备一个Payload 2. 服务器上启动 rmi 3. 向目标注入payload 参考 如果你已经用DNSLog之类的工具,探测到了某个url有fastjson问题,那么接着可以试试能不 ...

  9. OpenGL光照贴图

    一:啥叫贴图 上一节中,我们将整个物体的材质定义为一个整体,但现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成. 拓展之前的系统,引入漫反射和镜面光贴图(Map).这允许我们对物体的漫反 ...

  10. JS动态获取select中被选中的option的值,并在控制台输出

    生活城市: <select id="province"> <option>河南省</option> <option>黑龙江省< ...