【发布时间】:2011-11-03 07:46:08
【问题描述】:
我想在 win32 MessageBox 中显示一个 int 值。我已经阅读了一些不同的方法来执行这个演员。有人可以为我提供一个很好的实现。
Win32 编程新手,所以要轻松:)
更新
这就是我目前所拥有的。它有效..但文本看起来像中文或其他一些双字节字符。我不是在探索 Unicode 与不是 Unicode 类型。有人可以帮助我了解我哪里出错了吗?
int volumeLevel = 6;
std::stringstream os;
os<<volumeLevel;
std::string intString = os.str();
MessageBox(plugin.hwndParent,(LPCTSTR)intString.c_str(), L"", MB_OK);
【问题讨论】:
-
Formatting an integer in C++ 的可能重复项。 (对于 Unicode,使用
wostringstream。) -
@In silico:Nick 询问是否将 int 转换为 LPCTSTR,您正在指导他使用基于 wchar_t 的 wostringstream。假设他的项目是在启用 UNICODE 或 _UNICODE 的情况下编译的。
-
要同时考虑 unicode 和多字节编码(如
LPC*T*STR建议的那样),您必须使用#ifdef UNICODE typedef wostringstream tstringstream #else typedef ostringstream tstringstream #endif -
@Nick:
LPCTSTR是const char*或const wchar_t*的类型定义,具体取决于是否已定义UNICODE或_UNICODE。您可以通过string/wstring的c_str()方法从std::string获得const char*或从std::wstring获得const wchar_t*。