4144|3

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

RegOpenKeyEx后报错,FormatMessage取出来的信息是乱码 [复制链接]

RegOpenKeyEx后报错,FormatMessage取出来的信息是乱码。怎么解决。下面是代码。
#define BUFSIZE 80

HKEY hKey;
    char szProductType[BUFSIZE];
DWORD WordType = REG_SZ;
    DWORD dwBufLen = BUFSIZE;
    LONG lRet;

    lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,NULL,0,KEY_QUERY_VALUE,&hKey);
    if(lRet != ERROR_SUCCESS)
        {
                AfxMessageBox(LPCTSTR(_T("RegOpenKeyEx() Error!")),MB_OK);

                Show_FormatMessage(lRet,0);
        }


void Show_FormatMessage(DWORD dwErrorMsgId,int ShowType)
{
        /*利用FormatMessage函数得到错误代码的文本显示。而错误代号则可由GetLastError()获得。(_WINDOWS)*/
        //DWORD nErrorNo = GetLastError ( ); // 得到错误代码
        DWORD ret;
        LPSTR lpBuffer;
        WCHAR strErrorCause[256];
        char n_lpBuffer[256];
        lpBuffer = n_lpBuffer;

        ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER  |
                                                FORMAT_MESSAGE_IGNORE_INSERTS  |
                                                FORMAT_MESSAGE_FROM_SYSTEM,
                                                NULL,
                                                dwErrorMsgId, // 此乃错误代码,通常在程序中可由 GetLastError()得之
                                                LANG_NEUTRAL,
                                                (LPTSTR) & lpBuffer,
                                                0,
                                                NULL);

        if(ret != 0)
        {
                ;
        }
        else
        {
                sprintf(lpBuffer,"Error Message ID is:%ld",dwErrorMsgId);
        }
        mbstowcs(strErrorCause,lpBuffer,strlen(lpBuffer));

        //CString strErrorCause  =  lpBuffer  ?  _T(lpBuffer) : _T( " Sorry, cannot find this error info. " );
        switch(ShowType)
        {
                case 0://用消息对话框显示消息
                        MessageBox(strErrorCause,TEXT("Error Message"),MB_OK);

                        break;
                default:
                        break;
        }

        //  Free the buffer.
        LocalFree(lpBuffer);
}

最新回复

全给你了!  详情 回复 发表于 2007-7-1 18:04
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
up一下,有人帮忙回答一下.
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主自己去看EVC的帮助,参数不对。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
全给你了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表