错误代码和UNICODE编程
程序错误处理
一般错误返回的数据类型有VOID BOOL HANDLE PVOID LONG/DWORD 返回值哪些代表成功和错误需查文档
错误码和解释存放在WinError.h中
使用GetLastError()获取线程最后的错误信息
将错误码转换成文本描述使用函数 :
DWORD FormatMessage(
DWORD dwFlags,
LPCVOID pSource,
DWORD dwMessageId,
DWORD dwLanguageId,
PTSTR pszBuffer,
DWORD nSize,
va_list *Arguments);
定义自己错误的代码使用函数:ps.也可以使用这种模式定义成功的代码提示.
关于错误代码域的定义 请查资料
VOID SetLastError(DWORD dwErrCode);
使用Unicode编码编程能提高程序的效率,因为不需要使用内存进行编码转换
UNICODE使用c运行期库中的String.h -> typedef unsigned short wchar_t;
如果想放99个UNICODE字符和一个结尾为0的字符 wchar_t szBuffer[100]
c运行时库中的strcpy,strchr,strcat不能处理UNICODE,使用wcscpy,wcschr,wcscat
所有UNICODE函数以wcs开头,ANSI的是str
**如果想代码通用UNICODE和ANSI ,使用TCHAR.h中定义的宏
字符串前要加L,表明是UNICODE的字符串 使用TEXT()宏可以解决这个问题,他来转换
宏使用_下划线开头的是在C运行期的头文件里定义的,没有事在WIndows头文件中定义的
使用操作字符串函数时最好使用操作系统的字符串操作函数,而不是c运行期字符串函数.这样性能好
遵循的原则:
#将文本串视为字符数组,而不是chars数组或字节数组
#将通用数据类型(TCHAR,PTSTR)用于文本字符和字符串
#将显式数据类型(如BYTE,PBYTE)用于字节,字节指针和数据缓存
#将TEXT宏用于定义原义字符和字符串
#执行全局性替换(例如使用PTSTR替换PSTR)
#修改字符串预算问题.
#计算缓存大小使用sizeof(szBuffer)/sizeof(TCHAR)而不是sizeof(szBuffer)
#分配内存使用 malloc(n*sizeof(TCHAR))而不是malloc(n)
windows提供的字符串函数,都是使用宏实现的
lstrcat 将一个字符串置于另一个字符串的结尾处
lstrcmp 对两个字符串进行区分大小写的比较
lstrcmpi 对两个字符串进行不区分大小写的比较
lstrcpy 将一个字符串拷贝到内存中的另一个位置
lstrlen 返回字符串的长度(按照字符数来计算)
windows中支持UNICODE和ANSI字符和字符串转换的函数:
PTSTR CharLower(PTSTR pszString);
PTSTR CharUpper(PTSTR pszString);
windows用于转换缓存中包含的字符:
DWORD CharLowerBuff(PTSTR pszString, DWORD cchString);
DWORD CharUpperBuff(PTSTR pszString, DWORD cchString);
windows中字符大小写数字的判断函数:
BOOL IsCharAlpha(TCHAR ch);
BOOL IsCharAlphaNumeric(TCHAR ch);
BOOL IsCharLower(TCHAR ch);
BOOL IsCharUpper(TCHAR ch);
从资源里加载字符串资源:
LoadString(...);
判断是否包含Unicode字符:
isTextUnicode(CONST PVOID pvBuffer, int cb, PINT pResult);
在Unicode和ANSI之间转换字符串:
int MultiByteToWideChar(UINT uCodePage,
DWORD dwFlags,
PCSTR pMultiByteStr,
int cchMultiByte,
PWSTR pWideCharStr,
int cchWideChar);
int WideCharToMultiByte(...);
错误代码和UNICODE编程的更多相关文章
- VC的UNICODE 编程
简介 如果你编写的程序是针对非英语国家的用户,如中国.日本.东欧和中东地区,那么你一定要熟悉 UNICODE 字符集.尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果 ...
- 【Windows编程】系列第四篇:使用Unicode编程
上一篇我们学习了Windows编程的文本及字体输出,在以上几篇的实例中也出现了一些带有“TEXT”的Windows宏定义,有朋友留言想了解一些ANSI和Unicode编程方面的内容,本章就来了解和学习 ...
- VC++下的Unicode编程
ASCII是用来表示英文字符的一种编码规范.每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH). 其实,英文字符并没有那么多,一般只用前128个(00H ...
- 【转】VC++的Unicode编程
转自http://www.cnblogs.com/kex1n/archive/2010/03/15/2286510.html 原始出处http://www.vckbase.com/document/v ...
- 【转】VC下的Unicode编程
转自http://www.leewei.org/?p=1304 UniCode简述 在Windows下用VC编程,如果编写的程序要在多种语言环境下运行(比如日文.中文.葡萄牙文等),使用VC默认的MB ...
- VC++的Unicode编程
本文来自:http://tech.ddvip.com/2007-03/117395585321221.html 一.什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范 ...
- ANSI和UNICODE编程的注意事项
建立UNICODE编码工程 在VC60下,默认方式下建立的是ANSI编码的工程(注:编译的exe内部,其资源字符是以UNICODE保存),建立UNICODE编码工程的方法: 1.为工程添加UNICOD ...
- 编程中的多字节和Unicode
在编译许多程序的时候,我们常常会出现诸如指针转换错误或者const char[] 不能转换成XX的错误,这时很可能就是项目编码的问题了,如果您使用的是VS编程环境,那么打开工程属性,里面就有个选项是给 ...
- 彻底搞定char/wchar_t/unicode
彻底搞定char/wchar_t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (2013-07-17 10:18:28) 转载▼ 从char/wchar_t到TCHAR(1) ...
随机推荐
- Visual Studio 2017 发布 15.5 版本,百度网盘离线安装包下载。
Visual Studio 2017 15.5 版本已正式发布,同时发布的还有 Visual Studio for Mac 7.3 .此次更新包含主要性能改进,新特性以及 bug 修复.发行说明中文版 ...
- 正"/" 和 反"\"的区别?
反斜杠"\"是电脑出现了之后为了表示程序设计里的特殊含义才发明的专用标点.就是说,除了程序设计领域外,任何地方你都不应该有使用反斜杠的时候,请永远使用正斜杠"/" ...
- hihoCoder 1015 KMP算法
题意:经典字符串匹配算法.给定原串和模式串,求模式串在原串中出现的次数.算法讲解 AC代码 #include <cstdio> #include <cmath> #includ ...
- Spring Data JPA 入门Demo
什么是JPA呢? 其实JPA可以说是一种规范,是java5.0之后提出来的用于持久化的一套规范:它不是任何一种ORM框架,在我看来,是现有ORM框架在这个规范下去实现持久层. 它的出现是为了简化现有的 ...
- 八爪鱼采集器︱加载更多、再显示20条图文教程(Xpatth、Ajax)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于代码布置采集器比较麻烦,又很早知道八爪鱼采 ...
- ffmpeg入门之 Tutorial01
#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libswscale/ ...
- ASI通讯协议——ASI2x1
通讯协议--ASI2x1 基本功能描述 计算机或控制器通过以太网口或者RS232接口发出指令,包括查询指令,切换指令等,主机箱中的控制板在收到这些指令之后,将这些数据通过485总线转发给对应的主板,并 ...
- thinphp 整合ueditor
我的ueditor是部署在public/editor 部署前台页面 <script type="text/javascript" > var UEDITOR_HOME_ ...
- R语言︱用excel VBA把xlsx批量转化为csv格式
笔者寄语:批量读取目前看到有以下几种方法:xlsx包.RODBC包.批量转化成csv后读入.本章来自博客:http://www.cnblogs.com/weibaar/p/4506144.html 在 ...
- VxWorks各部分初始化流程
一)configAll.h中定义所有定置系统配置的宏 INCLUDED SOFTWARE FACILITIES:定义了基本组件: EXCLUDED FACILITIES:定义了扩充组件,缺省不包括: ...