win32编程简介

复习Win32整理下知识.

为什么学习win32?

  我们要编写windos程序.都离不开API. 也就是我们所说的win32程序. 所以学好win32是你能不能再windows下编写程序的基础.

在win32下我们要学习的知识如下.

  1.字符  字符的存储.

  2.多线程编程.

  3.线程同步编程

  4.窗口程序.城后本质.

  5.消息机制.

  6.进程编程

  7.内存 管理

  8.文件操作.

  9.内存映射

  10.DLL以及静态库程序

  11.DLL注入技术.

  12.模块隐藏.脱链

  13.进程通信编程.

  14.HOOK技术.

二丶字符的本质

  我们发现学习Win32要学习很多知识.不过总结一下也没有那么多.主要是多用多学多做.

首先说下字符.

  字符有 ASCII编码格式.有 UNICODE格式. 也有UTF - 8 格式. 那么我们说下他们的存储以及管理吧.

1.ASCII编码.

  

ASCii编码表. 因为计算机是老外发明的.所以编码一开始只有127个.

而我们计算机存储的编码就是这种.

我们可以使用 十六进制工具查看一下. (winhex)

1.新建文本文档.输入字符a

2.winhex查看字符存储的本质是什么.

关于第一步.省略.

可以看到存储的是0x61 十进制是97 也就是a所计算机存储ascii编码的时候.存储的就是ascii编码表中的格式.

2.Unicode编码

  上图的编码是ASCII编码. 但是只能存储127个字符.但是怎么显示中文那? 所以出了一个新的编码表.也就是GB2312编码表或者是GB2312

从127往上还有一个编码表.用于显示特殊符号的. 而GB2312编码表就是使用两个这样的编码来显示的.但是有一个弊端.如果同样一个中文.你发给外国朋友.他打开就会显示乱码了.

因为每个国家的编码格式都不一样.所以最后UNICODE格式出示.

UNICODE格式规定. 每一个字符都会使用独立的编码来显示.

比如 0x41 0x32 这两个字节来表示 中国的中字这样你发到任何电脑上都可以看到.

注意. UNICODE只是解决了字符怎么表示.并没有规定怎么存储. 什么意思?

意思就是 中字代表的是 0x41 0x32 那么国字就可能代表 0x41 0x32 0x33 使用三个字节来表示.

所以UNICODE - 16出世了

UNICODE-16 没两个字节来表示一个字符,如果不够两个字节或者超过两个字节.那么在增加两个字节来表示.

所以我们常说的UNICODE 就是说的UNICODE-16

3.UTF-8编码

上面说了的UNICODE-16解决了存储方式.但是也有弊端. 一个字节我按照两个字节来表示. 那么不是浪费了一个空间吗.特别是用于网络传输的时候.

所以UTF-8出来了. UTF - 8 就是可变长的. 什么意思.意思就是说.一个字节我就用一个字节表示.两个字节我就用两个字节表示. 只不过就是解析困难.

三丶代码中的宽字符窄字符

在代码中我们的宽字符窄字符就可以互相使用了.

char str[] = "A"                                               Asc版本编码使用
wchar_t str[] = L"A" Unicode版本
TCHAR str[] = TEXT("A") 兼容性版本使用.
TCHAR 是windows中的一个宏.如果你的当前程序属性设置的是ASC编码形式.
那么TCHAR就是char.如果是UNICODE 那么TCHAR就是 wchar_t类型. TEXT()是一个宏.是一个连接符. 如果是char类型.那么链接符号就是空宏.
如果是wchar_t类型. 那么连接符就是 L.
L表明是宽字符的意思.

他们在内存中的存储方式也不同了.

1.A版本 长度为1. 结尾一个0

2.U版本长度为2. 结尾两个0结束.

如果使用了不同版本的字符.那么就要使用对应的库来操作这些字符.

A版本.

  printf       strlen  strcat strcmp  strstr

U版本

  wprintf   wcslen  wcscat wcscmp wcsstrstr

关于字符串操作函数具体查询MSDN. 或者Google搜索一下.

win32编程简介的更多相关文章

  1. 黑客编程教程(二)Win API编程简介

    第二节 Win API编程简介 下面介绍一下WIN API. 我们需要自己编写一个工具时,必然会用到很多操作windows和控制windows的函数,这些函数就是windows API. API是Ap ...

  2. UNIX网络编程---简介

    UNIX网络编程---简介 一.           概述 a)       在编写与计算机通信的程序时,首先要确定的就是和计算机通信的协议,从高层次来确定通信由哪个程序发起以及响应在合适产生.大多数 ...

  3. 《编程简介(Java) ·10.3递归思想》

    <编程简介(Java) ·10.3递归思想> 10.3.1 递归的概念 以两种方式的人:男人和女人:算法是两种:递归迭代/通知: 递归方法用自己的较简单的情形定义自己. 在数学和计算机科学 ...

  4. Win32编程之静态库编写与使用.动态链接库的编写与使用

    Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库. 静态库其实就是解决模块开发的一种解决方案.在以前.我们写代码的时候.每个人都可以独立写一个项目.但是现在 ...

  5. 【WIN32编程】利用汇编写cs1.6辅助

    这篇文章本来在2018.5.1号就写完发圈子去了,这两天跟朋友在网吧打单击才想起来,就顺便把内容发上去把 作者:admin-神风 用CE找到功能的地址 CS1.6下载地址:https://pan.ba ...

  6. 【Unix网络编程】chapter3套接字编程简介

    chapter3套接字编程简介3.1 概述 地址转换函数在地址的文本表达和他们存放在套接字地址结构中的二进制值之间进行转换.多数现存的IPv4代码使用inet_addr和inet_ntoa这两个函数, ...

  7. 【Unix网络编程】chapter3 套接字编程简介

    chapter3套接字编程简介3.1 概述 地址转换函数在地址的文本表达和他们存放在套接字地址结构中的二进制值之间进行转换.多数现存的IPv4代码使用inet_addr和inet_ntoa这两个函数, ...

  8. OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. OpenCL安装 安装我不打算 ...

  9. 【在 Nervos CKB 上做开发】Nervos CKB脚本编程简介[2]:脚本基础

    CKB脚本编程简介[2]:脚本基础 原文作者:Xuejie 原文链接:Introduction to CKB Script Programming 2: Script 本文译者:Shooter,Jas ...

随机推荐

  1. Quartz.Net进阶之一:初识Job作业和触发器

        前几天写了一篇有关Quartz.Net入门的文章,大家感觉不过瘾,想让我在写一些比较深入的文章.其实这个东西,我也是刚入门,我也想继续深入了解一下,所以就努力看了一些资料,然后自己再整理和翻译 ...

  2. [翻译]高并发框架 LMAX Disruptor 介绍

    原文地址:Concurrency with LMAX Disruptor – An Introduction 译者序 前些天在并发编程网,看到了关于 Disruptor 的介绍.感觉此框架惊为天人,值 ...

  3. AutoCAD开发5--批量修改dwg文件

    Dim files, path, filename path = ThisDrawing.Utility.GetString(True, "输入dwg文件所在路径:") 'dwg文 ...

  4. MySQL InnoDB特性:两次写(Double Write)

    http://www.ywnds.com/?p=8334 一.经典Partial page write问题? 介绍double write之前我们有必要了解partial page write(部分页 ...

  5. delphi 中record 的类操作符重载简介

    今天简单介绍一下 delphi 中record 的类操作符重载使用,就是如何 实现 record 之间的简单操作. 关于类操作符重载 ,大家可以看官方的文档. Delphi allows certai ...

  6. 判断jquery对象是否具有某指定属性或者方法的几种方法

    1.typeof 运算符:返回一个用来表示表达式的数据类型的字符串.("number", "string", "boolean", &quo ...

  7. MFC的停靠窗口中插入对话框,在对话框中添加控件并做控件自适应

    单文档程序添加了停靠窗口后,可能会在停靠窗口中添加一些控件.在这里我的做法是在对话框上添加控件并布局,然后将这个对话框插入到停靠窗口中. 步骤 1.插入对话框,在对话框中放入控件(我的为树形控件),并 ...

  8. (转)Flex 布局教程:

    这个博客的内容比较新,多看看 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html [语法篇] http://www.ruanyifeng. ...

  9. VIP之Switch

    Switch II 最大能连接12路输入与12路输出 不能合并数据数 每个输入可以驱动多个输出 每个输出只能被一个输入驱动 当输入没有连接到输出时,可以禁止掉 每个被禁止的输入可以设置成停止或者消耗模 ...

  10. elasticsearch搜索引擎环境的搭建

    elasticsearch 搜索引擎 解决了什么问题:在我们数据量很大时,我们使用模糊查询会使索引列的索引消失,这样使用elasticsearch来提高查询效率. 存在什么问题:有时我们查询的词,el ...