FormatMessage 的使用

今天修改了下FormatMessage函数;

用法如下:

    HLOCAL hLocal = NULL;

//char* hLocal = new char[1000];

//memset(hLocal,0,1000 );

DWORD SystemLocal = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL);

BOOL fOk = FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,RetErr,SystemLocal,

                      (LPTSTR)&hLocal,0,NULL);

if(!fOk)

{

HMODULE hDll = LoadLibraryEx( TEXT("netmsg.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES );

if( hDll != NULL )

{

fOk = FormatMessage( FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_ALLOCATE_BUFFER,hDll,RetErr,SystemLocal,

                      (LPTSTR)&hLocal,0,NULL);

FreeLibrary( hDll );

}

}

if( fOk&&(hLocal))

{

SetDlgItemText( IDC_EDIT_ErrMsg,(LPCTSTR)LocalLock(hLocal));

}

这里要说明的是第5个参数的设定。

hLocal 本身是个系统内存的句柄,需要转换成LPTSTR型,转换完成后,需要通过LocalLock函数锁定内存返回指针。加上此处防止内存访问冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值