You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HWND转换为LPCWSTR并输出0x前缀的十六进制格式?

解决HWND转LPCWSTR时输出0x前缀短格式的问题

你当前的代码把HWND当作指针输出,所以64位系统下会固定输出16位带前导零的十六进制串。要得到0x5D0512这种格式,只需两步调整:

  • 将HWND转换成对应宽度的无符号整数类型UINT_PTR(保证和指针位数一致),让流按整数规则输出,自动去掉前导零。
  • 添加0x前缀,可通过流操纵符自动添加,也可手动拼接。

修改后的代码示例:

#include <sstream>
#include <iomanip>
#include <string>

// 假设hWnd是你的窗口句柄
std::wostringstream ss;
// std::showbase自动添加0x前缀,std::uppercase让十六进制字母大写(可选)
ss << std::showbase << std::hex << std::uppercase << static_cast<UINT_PTR>(hWnd);
std::wstring wstr = ss.str();
LPCWSTR title = wstr.c_str();

如果不想用流操纵符,也可以手动写前缀,效果完全一致:

std::wostringstream ss;
ss << L"0x" << std::hex << std::uppercase << static_cast<UINT_PTR>(hWnd);

这样处理后,title中的内容就会是0x5D0512格式,不会包含多余的前导零。

内容的提问来源于stack exchange,提问作者Cesar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:27:31