请教FormatMessage的用法

rover___ 2011-03-17 08:09:35
请教FormatMessage的用法
(百度)有人说“FormatMessage功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数”,实在不负责任的说法。
MSDN上给出的代码用法:
#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <stdio.h>

void main(void)
{
LPWSTR pMessage = L"%1!*.*s! %4 %5!*s!";
DWORD_PTR pArgs[] = { (DWORD_PTR)4, (DWORD_PTR)2, (DWORD_PTR)L"Bill", // %1!*.*s! refers back to the first insertion string in pMessage
(DWORD_PTR)L"Bob", // %4 refers back to the second insertion string in pMessage
(DWORD_PTR)6, (DWORD_PTR)L"Bill" }; // %5!*s! refers back to the third insertion string in pMessage
const DWORD size = 100+1;
WCHAR buffer[size];


if (!FormatMessage(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY,
pMessage,
0,
0,
buffer,
size,
(va_list*)pArgs))
{
wprintf(L"Format message failed with 0x%x\n", GetLastError());
return;
}

// Buffer contains " Bi Bob Bill".
wprintf(L"Formatted message: %s\n", buffer);
}
问题:用这个函数能否实现把字符串和数值进行合并为一个字符串的功能?如
“今天是:”+int+“年”+int+“月”+int+“日”这样的功能?如何实现?
请给出实例代码。
...全文
334 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rover___ 2011-03-30
  • 打赏
  • 举报
回复
还有没有?再放3天结贴。
oyljerry 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 rover___ 的回复:]
请教FormatMessage的用法
(百度)有人说“FormatMessage功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数”,实在不负责任的说法。
MSDN上给出的代码用法:
#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <stdio.……
[/Quote]
格式化字符串,int型用%d来替换,最终拼接成字符串
jyh_baoding 2011-03-18
  • 打赏
  • 举报
回复
这问题自己可以查查文档
Dreadnought 2011-03-17
  • 打赏
  • 举报
回复

int nYear = 2011 ,nMonth = 3 ,nDay = 17;
TCHAR szYear[5] , szMonth[3] ,szDay[3];
wsprintf(szYear,TEXT("%d"),nYear);
wsprintf(szMonth,TEXT("%d"),nMonth);
wsprintf(szDay,TEXT("%d"),nDay);
LPWSTR lpSource = TEXT("今天是:%1年%2月%3日");
DWORD_PTR pArgs[] = { (DWORD_PTR)szYear, (DWORD_PTR)szMonth, (DWORD_PTR)szDay};
const DWORD size = 100+1;
WCHAR buffer[size];

if (FormatMessage(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY,
lpSource,
0,
0,
buffer,
size,
(va_list*)pArgs))
{
MessageBox(hWnd,buffer,TEXT("Date"),MB_ICONINFORMATION);
}


不知道这个符不符合你的要求
  • 打赏
  • 举报
回复
好像STRING 也有个Format的函数。。你看一看MSDN。。。能做到你要的效果。。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧