来自 wchar_t* 的 C++ Win32 GDI+ 拉绳
Posted
技术标签:
【中文标题】来自 wchar_t* 的 C++ Win32 GDI+ 拉绳【英文标题】:C++ Win32 GDI+ drawstring from wchar_t* 【发布时间】:2014-09-22 07:12:02 【问题描述】:我已经完成了搜索并为此花费了至少一个小时。
wchar_t* fooBar = (wchar_t*)L"BlahBlah\0";
//GetWindowText(pDIS->hwndItem, (wchar_t*)fooBar, 64);
g->DrawString(fooBar, -1, &font, rectf, &strFormat, textColorUp);
这可以工作,并且可以编译;因为正确绘制了字符串“BlahBlah”。
问题是我想使用已注释掉的 GetWindowText() 的值。
转换可能有问题,但我就是找不到。
【问题讨论】:
【参考方案1】:您需要为GetWindowText
函数分配空间来写入。您不能提供字符串文字的地址,因为它们是不可修改的。
wchar_t buffer[1024];
GetWindowText(pDIS->hwndItem, buffer, _countof(buffer));
g->DrawString(fooBar, -1, &font, rectf, &strFormat, textColorUp);
【讨论】:
谢谢。我找到了_countof()的宏,即:#define _countof(array) (sizeof(array)/sizeof(array[0])) @EvanCarslake 除非你想被限制在一个固定的最大长度,你可以先调用GetWindowTextLength
,然后分配一个动态缓冲区。以上是关于来自 wchar_t* 的 C++ Win32 GDI+ 拉绳的主要内容,如果未能解决你的问题,请参考以下文章