WEB开发网
开发学院手机开发Windows Mobile 开发 Windows Mobile RegQueryValueEx()函数读出乱码问... 阅读

Windows Mobile RegQueryValueEx()函数读出乱码问题

 2010-06-03 22:58:00 来源:WEB开发网   
核心提示:RegQueryValueEx()函数是windows中读取注册表的函数,最近用它从windows mobile的注册表中要读取一个11位的TCHAR数组,Windows Mobile RegQueryValueEx()函数读出乱码问题,结果数组内数据正确,但后面老是带了一些乱码,道理是一样的,刚开始搞windows

RegQueryValueEx()函数是windows中读取注册表的函数,最近用它从windows mobile的注册表中要读取一个11位的TCHAR数组,结果数组内数据正确,但后面老是带了一些乱码。而且我是连续读取三个键,只有第一个会出问题,经过各种测试和csdn,发现问题出在最后一个参数LPDWORD lpcbData上。仔细阅读MSDN发现,这个参数是[in,out]类型,即开始需要输入,函数运行完后又会返回一个值,所以正确的设定初始输入值才能保证没有乱码。我在三次读取中用了同一个变量作为该参数,后面两个使用时该变量已经被改变为前一次的输出值了,因而读取正确,只有第一次是我赋予的初始值,与正确值有偏差出现了乱码。

该参数输入表示的是lpdata参数的buffer的大小,输出表示的是赋给lpdata参数的数据的大小,仔细算好大小是王道,用strlen和wcslen。本例中11位TCHAR数组应该是24。

当然,如果实在算不准,可以先给该键付一个长度等于buffer的值,然后在读取后设一个断点,看看该参数的返回值,然后将其初始值修改为该值,即可解决。还有很多人使用了连续两次读取同一键值的方法,道理是一样的。

刚开始搞windows mobile编程,还是学到了不少东西的,加油~感谢以前遇到这个问题并解决这个问题的同志们~

Tags:Windows Mobile RegQueryValueEx

编辑录入:coldstar [复制链接] [打 印]
赞助商链接