WIN32怎么叠加多个LPCSTR字符串?

末影小末EnderMo 2020-06-27 08:45:46
(纯WIN32API,VS2019)

想做一个检查版本号的桌面应用实验,具体如下:

先定义一个版本号的字符串
#define ver L"1.0.0"

[附加信息]这是自写的TipBox函数
int TipBox(
HWND hWnd, // handle
LPWSTR lpText, // text
LPWSTR lpCaption, // title
UINT uType // style

调用方式如下
TipBox(NULL,L"窗口文字",L"标题栏",0);

和MessageBoxW差不多
但是问题来了
如果要显示一些字符串,之后追加显示定义的ver呢?
举个例子
目标TipBox输出如下:
应用名称:xxx
版本:(追加显示ver定义)
请问如何能实现呢
...全文
478 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2020-07-05
  • 打赏
  • 举报
回复
Ver, L"\r\nXXXX") 几个 ?
WCHAR Ver[3]; 几个 ?
schlafenhamster 2020-07-05
  • 打赏
  • 举报
回复
wchar_t Verstr[80]=L"版本:";
wchar_t verNum[]=L"\r\nXXXX";
wcscat(Verstr,verNum);
  • 打赏
  • 举报
回复
引用 20 楼 schlafenhamster 的回复:
Ver, L"\r\nXXXX") 几个 ? WCHAR Ver[3]; 几个 ?
XXXX正常显示了 但是"版本:"这几个字是乱码
  • 打赏
  • 举报
回复
引用 16 楼 zgl7903 的回复:
wcscpy_s(wstrVer, L"版本:"); wcscat_s(wstrVer, Ver); wcscat_s(wstrVer, L"\r\nXXXX"); wcscat_s(wstrVer, L"\r\nXXXX"); wcscat_s(wstrVer, L"\r\nXXXX"); wcscat_s(wstrVer, L"\r\nXXXX"); wcscat_s(wstrVer, L"\r\nXXXX"); wcscat_s(wstrVer, L"\r\nXXXX");
WCHAR在对话框里面显示乱码可以解决吗
  • 打赏
  • 举报
回复
引用 18 楼 zgl7903 的回复:
项目是UNICODE的么? 项目属性修改为UNICODE 如果是 上代码来看看

//为了方便代码使用,将以下代码合并为Verstr
#define Verstr wcscpy(ver, L"版本:"); wcscat(Ver, ver);
    WCHAR Ver[3];
    Verstr; wcscat(Ver, L"\r\nXXXX");
//其中,"版本:"显示为乱码,并且改变WCHAR Ver[]里面的字符后也会显示不同的文字,并且这个数值太大会出现数组越界
zgl7903 2020-07-04
  • 打赏
  • 举报
回复
项目是UNICODE的么? 项目属性修改为UNICODE
如果是 上代码来看看


zgl7903 2020-07-03
  • 打赏
  • 举报
回复
wcscpy_s(wstrVer, L"版本:");
wcscat_s(wstrVer, Ver);
wcscat_s(wstrVer, L"\r\nXXXX");
wcscat_s(wstrVer, L"\r\nXXXX");
wcscat_s(wstrVer, L"\r\nXXXX");
wcscat_s(wstrVer, L"\r\nXXXX");
wcscat_s(wstrVer, L"\r\nXXXX");
wcscat_s(wstrVer, L"\r\nXXXX");


  • 打赏
  • 举报
回复
引用 11 楼 zgl7903 的回复:
C 的功底有待加强 #define Ver L"1.00" WCHAR wstrVer[128]; //格式化 swprintf_s(wstrVer, L"版本:%s", Ver); 或者拼接 wcscpy_s(wstrVer, L"版本:"); wcscat_s(wstrVer, Ver); TipBox(NULL, wstrVer, L"标题", 0);
那这样不就把字串固定了吗 可以做成容纳多个LPWSTR字符的哪种吗 因为这样提示框里面只有 版本:1.0.0 这几个字了,如果还需要添加其他信息,能实现多个字串的添加吗
Eleven 2020-07-01
  • 打赏
  • 举报
回复
CString::Format
xiaohuh421 2020-07-01
  • 打赏
  • 举报
回复
百度 sprintf 相关函数.
zgl7903 2020-07-01
  • 打赏
  • 举报
回复
C 的功底有待加强 #define Ver L"1.00" WCHAR wstrVer[128]; //格式化 swprintf_s(wstrVer, L"版本:%s", Ver); 或者拼接 wcscpy_s(wstrVer, L"版本:"); wcscat_s(wstrVer, Ver); TipBox(NULL, wstrVer, L"标题", 0);
schlafenhamster 2020-07-01
  • 打赏
  • 举报
回复
就是 Str += Ver ?
schlafenhamster 2020-06-30
  • 打赏
  • 举报
回复
HRSRC hsrc=FindResource(0, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
  • 打赏
  • 举报
回复
说简单一点 “版本:”字符串这个不是相当于L“版本:”吗 所以在TipBox里面就是 TipBox(NULL,L“版本:”,L“标题”,0); 但是由于我不可能在每一个TipBox里全部单独写一个版本字符串哪 所以我加了一个定义 『#define ver L“1.0.0”』 意思就是可以直接通过调用ver定义就可以显示这个文本了, 就如 【TipBox(NULL,L“版本:”/*追加显示ver的字符串*/,L“title”,0)】 【目标对话框文字:版本:1.0.0】 但毕竟这是WINAPI,和纯C不一样,纯C的文本串联代码用起来更难
schlafenhamster 2020-06-30
  • 打赏
  • 举报
回复
追加显示ver定义 ? 是 xxx 的 version ? 追加显示ver定义 ?
  • 打赏
  • 举报
回复
引用 6 楼 schlafenhamster 的回复:
追加显示ver定义 ? 是 xxx 的 version ? 追加显示ver定义 ?
不是,是在头文件里定义了一个字符串 #define ver L“1.0.0”
zgl7903 2020-06-30
  • 打赏
  • 举报
回复
字符串拷贝和拼接,C的基础 TCHAR szText[256]; _tcscpy_s(szText, TEXT("ABCE")); _tcscat_s(szText, TEXT("1234"));
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
先拼接好字符串,然后再调用传递参数
所以怎么用啊 都没尝试过,docs里面也找不到合适的文档
zgl7903 2020-06-28
  • 打赏
  • 举报
回复
先拼接好字符串,然后再调用传递参数
schlafenhamster 2020-06-28
  • 打赏
  • 举报
回复
Column.pszText=(LPSTR)(LPCSTR)title;
加载更多回复(1)

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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