程序错误处理

一般错误返回的数据类型有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编程的更多相关文章

  1. VC的UNICODE 编程

    简介 如果你编写的程序是针对非英语国家的用户,如中国.日本.东欧和中东地区,那么你一定要熟悉 UNICODE 字符集.尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果 ...

  2. 【Windows编程】系列第四篇:使用Unicode编程

    上一篇我们学习了Windows编程的文本及字体输出,在以上几篇的实例中也出现了一些带有“TEXT”的Windows宏定义,有朋友留言想了解一些ANSI和Unicode编程方面的内容,本章就来了解和学习 ...

  3. VC++下的Unicode编程

    ASCII是用来表示英文字符的一种编码规范.每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH). 其实,英文字符并没有那么多,一般只用前128个(00H ...

  4. 【转】VC++的Unicode编程

    转自http://www.cnblogs.com/kex1n/archive/2010/03/15/2286510.html 原始出处http://www.vckbase.com/document/v ...

  5. 【转】VC下的Unicode编程

    转自http://www.leewei.org/?p=1304 UniCode简述 在Windows下用VC编程,如果编写的程序要在多种语言环境下运行(比如日文.中文.葡萄牙文等),使用VC默认的MB ...

  6. VC++的Unicode编程

    本文来自:http://tech.ddvip.com/2007-03/117395585321221.html 一.什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范 ...

  7. ANSI和UNICODE编程的注意事项

    建立UNICODE编码工程 在VC60下,默认方式下建立的是ANSI编码的工程(注:编译的exe内部,其资源字符是以UNICODE保存),建立UNICODE编码工程的方法: 1.为工程添加UNICOD ...

  8. 编程中的多字节和Unicode

    在编译许多程序的时候,我们常常会出现诸如指针转换错误或者const char[] 不能转换成XX的错误,这时很可能就是项目编码的问题了,如果您使用的是VS编程环境,那么打开工程属性,里面就有个选项是给 ...

  9. 彻底搞定char/wchar_t/unicode

    彻底搞定char/wchar_t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (2013-07-17 10:18:28) 转载▼     从char/wchar_t到TCHAR(1) ...

随机推荐

  1. 危化品速查APP--Android Project

    开发环境 Android studio 2.3.1 功能描述 集成多种查询方式,查看本地数据库中危险化学品的信息: 按照中文拼音和英文首字母,对化学品进行查询: 按照UN号或者CAS号查询相应的化学品 ...

  2. Python实现二分查找

    老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...

  3. JavaScript原生拖放API入门总结

    一.背景 最早实现JavaScript拖放功能的是IE4的浏览器了.在当时,网页中只有图像和文本才能够进行拖放.IE5之后,拖放功能得到了扩展,形成了一个API(应用程序编程接口),使得几乎任何的标签 ...

  4. Keras学习笔记

    Keras基于Tensorflow和Theano.作为一个更高级的框架,用其编写网络更加方便.具体流程为根据设想的网络结构,使用函数式模型API逐层构建网络即可,每一层的结构都是一个函数,上一层的输出 ...

  5. mysql数据库字符集编码查看以及设置

      show variables like %char% character_set_client     | gb2312                           character_s ...

  6. Srtuts2实现登录界面(不连接数据库)报错(二)

    二月 28, 2014 11:37:29 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  7. HighCharts之2D柱状图、折线图和饼图的组合图

    HighCharts之2D柱状图.折线图和饼图的组合图 1.实例源码 ColumnLinePie.html: <!DOCTYPE html> <html> <head&g ...

  8. JavaScript遍历table

    JavaScript遍历table 1.说明      遍历表格中的某行某列,并打印其值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  9. 泛型集合、datatable常用数据类型转换Json帮助类

    泛型集合.datatable常用数据类型转换Json帮助类 using System; using System.Data; using System.Configuration; using Sys ...

  10. DirectX--给视频加马赛克、字符OSD

    在虚拟摄像头(CSourcefilter)的fillbuffer中添加代码,在打码区域50*50,像素分辨率1/10: for (int i=0;i<50;i++) { for (int k=0 ...