1. 引言与背景知识
bullet point 就是word里的那个项目符号,但在GDI里你是很难直接
绘制出来,一个简单的方法是用图片代替。
或者直接在你的code里输入unicode的图元(vs2008 或者 vc6 均可),
这样也可以绘制出来。
但你在 code里插入unicode 的 字符,可能会有潜在的问题,起码VS2008 会提示你要把你的
代码文件改为unicode的编码,不然很容易build 出错。另外,当你把这个代码提交给别人,有
可能会出现乱码,这就是很多openSource的code,你下载下来,一编译,发现很多字符是显示‘?
然后还少一个引号,就是这个原因,尤其是俄国人写的code。
bullet point 其实是一个点,在有些字体里,也可以表现为其他的形状。
在 UNICODE里的编码是 U+2022, 这个是 圆点。
三角点 是 2023,空心圆是 25E6。
html里输入应该是:
• | • | • | bullet |
© | © | © | copyright symbol |
要用GDI draw出来,你必须选择合适的字体,但一般用系统的字体就可以了。
unicode编码的代码,可以选用 Tahoma字体,这个系统会根据注册表自动link到
相应的字体,比如 simsung 就是宋体,这样你才可以显示中文。
windows API 都给你作了封装,一切对你都是透明的。
如果你需要自己从头写,当然也是可以的。但制作一个UNICODE字体是非常耗力的。
微软的 unicode 字体有 20几M呢,它包含了所有字符的图元。
//被打断,稍后继续
不得不说的 Alt code。
关于这个东西,今天我才仔细去了解,因为以前曾不用到他,但从事 Page coding的
engineer肯定知道这个。
顾名思义: alt code 就是 按住 alt 键,然后按小键盘上的数字,就可以输入一些 键盘上
没有的符号。
你可以打开一个 notepad,然后按 alt + 小键盘的数字0149 ,就会显示一个圆点。
在 word里 按 alt + 7 就是圆点。
2. 解决方法
在google 了一些东西后,总结一下:
一般Windows native 的 client c++ 代码中,如果是系统的字体,可以这样做,
TCHAR szTest[] = _T(“t Test”);
szTest[0] = 0x25cf; // 这个就是 bullet point
m_btnSubmit.SetWindowText(szTest);
效果如下:
Test 步骤:
用 VS2008 new 一个工程,把某个 button的文本改成 上面一样,但需要是
unicode 编译。
测试环境是 win7 的OS 和 Windows Xp, 均通过。
0
alt + 0149 ,在 notepad里肯定可以的
一定要小键盘的数字哦
A really good answer, full of raloniatity!