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时间不长,如果有什么地方写的不对,希望大家能批评指正。 


WINCE学习经验总结一(希望给初学者一些建议,尽快入门)

学习嵌入式系统的经验总结及教学大纲。 (一些参考资料,请初学者自行查找)没有链接的,请大家见谅  1、  认识什么是嵌入式操作系统 2、  Wince的介绍及了解 3、  Wince6.0的初体...
  • liujianning
  • liujianning
  • 2011年08月23日 17:10
  • 1787

wince 编程点滴

1、vb.net Wince 隐藏标题栏方法 Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None ‘设置为无边框模式即可。 2、.ne...
  • linczone
  • linczone
  • 2015年05月22日 16:17
  • 936

为了学习WinCE嵌入式编程,又开始学起了MFC

       以前用VC(MFC)主要是做DLL,做得上手,自以为对MFC还挺熟。可没有想到在用EVC开发WinCE上的程序时,发现连一个简单的记事本程序(EVC向导对单文档基类不可选),都很困难,很...
  • yefanqiu
  • yefanqiu
  • 2006年03月16日 13:46
  • 3887

wince编程心得(一)------wince字符转换函数及应用

 大家都知道wince下字符集是unicode字符集,因此在wince开发时经常会遇到unicode与ansi转换的问题,而常用的转换函数就为WideCharToMultiByte(宽字符集转多字符集...
  • zhangjie_xiaoke
  • zhangjie_xiaoke
  • 2008年11月28日 15:31
  • 225

达人眼中的WINCE网络驱动

-8
  • LoongEmbedded
  • LoongEmbedded
  • 2015年10月20日 11:35
  • 1219

“零基础”学习WinCE开发

 在接触WinCE时候的基础: 软件语言基础:C/C++/C#。我不是计算机专业的,所以这些语言基础也是比较业余的。经验不丰富,遇到问题就是查MSDN或者到网上查找相关解决方案即可,程序就...
  • yongyong521
  • yongyong521
  • 2017年12月17日 16:36
  • 266

话一:Wince开发之软硬件需求

硬件需求 1、WindowsPC 2、Wince设备 软件需求 IDE:Visual Studio 2005 或者 Visual Studio 2008 Database:Sql Server...
  • amwteym
  • amwteym
  • 2016年09月23日 17:31
  • 108

编程心得体会

1、多写通用的公共的类,公共的常量,这样修改起来非常容易2、多拆分函数,很容易抽象化3、多做一点,例如一个运营商出现了这个问题,其他都同时修改,注意代码的每一个细节,这样就会较少Bug的机会,较少反复...
  • dotnet90
  • dotnet90
  • 2008年05月24日 00:43
  • 3059

wince Socket编程之一

这几天准备好好研究一下网络通讯,研究的对象主要是针对wince的tcp/ip连接.我的PDA是华硕620BT,它的操作系统是2003的,对应的操作系统版本号是4.2.网络通讯用的是无线wifi网卡.书...
  • chNeed1
  • chNeed1
  • 2007年08月26日 18:25
  • 5883

wince6 应用程序使用定时器

----------------------------------------------------------------------------------------------------...
  • heiyuu1
  • heiyuu1
  • 2012年07月26日 21:29
  • 624
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wince编程心得(一
举报原因:
原因补充:

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