将LPCTSTR连接到MessageBox

时间:2018-10-12 03:27:19

标签: c++ winapi tchar

如何为MessageBox连接LPCTSTR? Java中的语法就是这样

LPCTSTR str1 = "String2";
LPCTSTR str2 = "";
LPCTSTR str3 = "String1";
LPCTSTR finalMsg = "";

finalMsg = str1 + str2 + str3;

C ++ / Win32中的语法是什么? 谢谢!

3 个答案:

答案 0 :(得分:2)

请勿使用TCHAR,该代码用于可针对不支持Unicode的Windows版本(即Windows 98)的代码。

使用标准库字符串类来处理内存管理和串联。

std::wstring str1 = L"String2";
std::wstring str2 = L"";
std::wstring str3 = L"String1"
std::wstring finalMsg = str1 + str2 + str3;
MessageBoxW(..., finalMsg.c_str(), ...);

答案 1 :(得分:-1)

使用strcat()复制旧的C样式字符串。

或更准确地说,_tcscat()在大多数平台上都可以使用您正在使用的任何字符类型。

请确保预先分配字符串缓冲区,使其足够容纳任何结果。

TCHAR buff[128];

_tcscpy(buff, str1);
_tcscat(buff, str2);
_tcscat(buff, str3);

答案 2 :(得分:-1)

serial = int(serialnumber)

计划B:使用#include <windows.h> #include <tchar.h> int main() { LPCTSTR str1 = _T("String2"); LPCTSTR str2 = _T(""); LPCTSTR str3 = _T("String1"); LPTSTR finalMsg = new TCHAR[_tcslen(str1) + _tcslen(str2) + _tcslen(str3) + 1]; _tcscpy(finalMsg, str1); _tcscat(finalMsg, str2); _tcscat(finalMsg, str3); MessageBox(nullptr, finalMsg, _T("Message"), MB_OK); delete[] finalMsg; } 字符串类:

std

如果不需要支持Windows的仅ANSI版本,则可以完全删除#include <windows.h> #include <tchar.h> #include <string> using tstring = std::basic_string<TCHAR>; int main() { tstring str1 = _T("String2"); tstring str2 = _T(""); tstring str3 = _T("String1"); tstring finalMsg = str1 + str2 + str3; MessageBox(nullptr, finalMsg.c_str(), _T("Message"), MB_OK); } TCHAR并使用...TSTR,这是{{1 }} std::wstring