【问题标题】:MFC: how to display copyright symbol?MFC:如何显示版权符号?
【发布时间】: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


【解决方案1】:

我建议你可以尝试使用这个字符“\xa9”来显示版权标志,就像:

DrawTextW(pDC->GetSafeHdc(), L"\xa9", -1, rect, DT_LEFT | DT_SINGLELINE);

注意:请参考此处的utf8字符表:https://www.utf8-chartable.de/unicode-utf8-table.pl?start=128&number=128&utf8=string-literal&unicodeinhtml=hex

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2014-06-03
    • 1970-01-01
    • 2014-11-17
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多