【发布时间】:2020-07-13 15:24:51
【问题描述】:
目前,我查询版权信息并使用 DrawText 显示。但版权符号显示为“(c)”不太理想。有没有办法将它显示为围绕 c 的圆圈?我四处搜索,但还没有找到任何工作代码。作为参考,下面是我现在使用的。
VerQueryValue(ver_info, TEXT("\\StringFileInfo\\01234567\\LegalCopyright"), &lplpBuffer, &sz);
strncpy(buf, (char *)lplpBuffer, sz);
m_copyright = (CString)buf;
pDC->DrawText(m_copyright, rc, DT_LEFT | DT_SINGLELINE);
它将输出“Copyright (c) ...”,我想将其替换为“(c)”。如果可能,该解决方案应该适用于 Visual Studio 2008。
以下代码只显示uA9,不显示版权符号。
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
CRect rect(50, 50, 200, 200);
DrawTextW(pDC->GetSafeHdc(), L"\uA9", -1, rect, DT_LEFT | DT_SINGLELINE);
}
【问题讨论】:
-
如果你只使用字符 U+A9 会发生什么?版权标志的 Unicode 字符代码。
-
不确定你的意思,但是 DrawText(U+49,...) 给出了编译错误。顺便说一句,当我设置项目时,我没有选择 unicode 支持。需要开机吗?
-
在这一点上,对于 Windows 开发,您绝对应该更喜欢 Unicode 而不是多字节字符(我知道这个名字很奇怪,因为 Unicode 本身就是一种多字节编码,MBCS 起源于将这些字符编码与早期的单字节编码,如 ASCII,但 Unicode 总是被视为其他东西)。用 DrawTextW 函数试试字符串 L"\uA9"(还要注意它是大写的 'A' 而不是数字 '4')。
-
如前所述,版权标志为字符A9。而且我想补充一点,它在大多数 ANSI 代码页中也是 A9,因此在源文件(作为十六进制字符文字)或资源文件中输入字符应该没有问题,甚至从另一个源复制和粘贴它.
-
有没有更简单的方法,因为只需要绘制一个符号?要使用 DrawTextW,我必须更改项目的很多地方,因为最初创建项目时它没有选择 unicode 支持。
标签: c++ visual-studio visual-c++ mfc