wince编程心得(一

原创 2007年09月22日 18:23:00
 

HTML Tags and JavaScript tutorial



wince编程心得(一



字符转换函数及应用


        大家都知道wince下字符集是unicode字符集,因此在wince开发时经常会遇到unicode与ansi转换的问题,而常用的转换函数就为WideCharToMultiByte(宽字符集转多字符集),MultiByteToWideChar(多字符集转宽字符集),然而初学者在应用这两个函数时常常会犯一些概念性的错误。下面我就对这两个函数的使用做一下简单说明,希望初学者不要在这个上面犯错误,如果是函数出错,会造成缓冲区溢出,错误不好发现。
(1)宽转多函数
int WideCharToMultiByte(
  UINT CodePage,
  DWORD dwFlags,
  LPCWSTR lpWideCharStr,
  int cchWideChar,
  LPSTR lpMultiByteStr,
  int cbMultiByte,
  LPCSTR lpDefaultChar,
  LPBOOL lpUsedDefaultChar
);
UINT CodePage;//////字符集代码页
DWORD dwFlags;//////该标志一般设置为0,具体请看EVC帮助
LPCWSTR lpWideCharStr;///////宽字符串
int cchWideChar;//////宽字符串的长度,以字符为单位,如果此值设为-1,则函数自动获得宽字符串的长度,编程中此值一般设置为-1       
LPSTR lpMultiByteStr;多字节字符串缓冲区指针,
int cbMultiByte;//////转换后多字节的缓存最大值(用字节来计算),如果传递0,则本函数返回目标缓存的大小值
LPCSTR lpDefaultChar;/////当宽字节字符串的有字符在代码页中无法转换时,返回这个变量所指的值,一般设为NULL;
LPBOOL lpUsedDefaultChar;这个值可以用来监测转化是否成功,通常设为NULL;
(2)多转宽函数
int MultiByteToWideChar(
  UINT CodePage,
  DWORD dwFlags,
  LPCSTR lpMultiByteStr,
  int cbMultiByte,
  LPWSTR lpWideCharStr,
  int cchWideChar
);
UINT CodePage;////字符集代码页
DWORD dwFlags;////该标志一般设置为0,具体请看EVC帮助
LPCSTR lpMultiByteStr;/////多字节字符串
int cbMultiByte;/////多字节字符串长度,以字节为单位,如果此值设为-1,则函数自动获得多字节字符串长度.编程中一般设置为-1
LPWSTR lpWideCharStr;/////宽字符串缓冲区指针
int cchWideChar;//////宽字符串缓冲区最大值(以字符为单位),如果传0,则函数返回转化后缓冲区大小,为字符个数
(3)MultiByteToWideChar转化实例
void MultiByte_To_WideChar_Convert()
{
//////(1)声明转换前的字符串
char chSource_Char[] = "hello world";
//////(2)调用MultiByteToWideChar,为lpWideCharStr传递NULL , cchWideChar 传递0
int iWide_Buffer_Size = MultiByteToWideChar(CP_ACP , 0 , chSource_Char , -1 , NULL , 0);
//////(3)声明宽字符缓冲区
WCHAR * pwchWide_Char = new WCHAR[iWide_Buffer_Size + 1];
if(pwchWide_Char == NULL)
{
        AfxMessageBox(L"内存分配失败");
        return;
}
memset(pwchWide_Char , 0 , (iWide_Buffer_Size + 1)*sizeof(WCHAR));
//////(4)转化
MultiByteToWideChar(CP_ACP , 0 , chSource_Char , -1 , pwchWide_Char , iWide_Buffer_Size);
}
    WideCharToMultiByte()用法和上例类似。希望能够对初学者有所帮助,以免犯我犯过的错误。我做ce时间不长,如果有什么地方写的不对,希望大家能批评指正。 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

固高运动控制器-vs2008远程调试wince心得_1

VS2008在wince下远程调试使用:因为工程阶段使用的是固高的运动控制器,固高上的系统是wince,准确的说主要使用的是wince6.0,建议将wince5.0升级为wince6.0,如果自己不会...

个人心得:wince学习路线

个人心得:wince学习路线与桌面操作系统和服务器操作系统下的软件开发不同,为嵌入式操作系统开发软件可不只是写写应用程序那么简单。我们常常要深入到内核,甚至要深入到硬件。根据不同的开发层面,我们把Wi...

WINCE注册表编程介绍用法

注册表中RegSetValueEx用法     如今修改注册表成为继超频之后的又一大热点,许多CFAN通过对注册表的修改使Win98显得更加个性化,诸多报刊杂志也纷纷扯起注册表这面旗帜,令人遗憾...

基于DirectShow的WinCE多媒体编程

基于DirectShow的WinCE多媒体编程 by斜风细雨QQ:253786989    2012-02-17 (1) 简介   DirectShow是由微软开发的处理多媒体文件的应...

WinCE系统下基于DirectShow的摄像头应用编程

WinCE系统下基于DirectShow的摄像头应用编程 by斜风细雨QQ:253786989    2012-02-17   在WinCE设备上使用摄像头时,一般都是向厂家索要驱动。对于摄...

WINCE两个小时学会DirectDraw编程

WINCE两个小时学会DirectDraw编程 初步看了一下这篇文章,基本是没有什么大用,只是对于初学时,有点点的指导作用.要真正掌握DirectDraw还是系统去学习一下DirectDraw,有本...
  • xah18
  • xah18
  • 2011-09-21 10:49
  • 527

基于DirectShow的WinCE多媒体编程

http://blog.csdn.net/northcan/article/details/7266765 (1) 简介   DirectShow是由微软开发的处理多媒体文件的应用程序接口...

WinCE 编程的十点忠告

我们起步于Microsoft Win32代码,当然 Windows CE是基于Win32应用程序接口(API)的。有利的是,我们的应用程序(即Raima 数据管理器)有方便的使用接口,并包含一个大约由...

基于WINCE平台C#编程要点之一

基于WINCE平台C#编程要点之一 发布时间:2008-4-22 17:24:23    被阅览数:2710次           本文主要介绍在基于...

WinCE串口编程API函数(二)

异步串口I/O:   BOOL GetCommMask(   HANDLE hFile,   LPDWORD lpEvtMask   );   BOOL SetCommMask(   HANDLE h...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)