曾经有人问过这个问题:
其实用修改文字格式的方法就能实现,与控件属性无关。方法如下:
在OnPaint函数加这个:
CPaintDC dc(this);
CFont vertFont;
CRect rect;
CString strText=" HEllo WoRLD! "; //文本内容
GetClientRect(rect);
//字体
vertFont.CreateFont(16, 0, 900, 900, FW_BOLD,
0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH, "Arial");
CFont *pOldFont = dc.SelectObject(&vertFont);
COLORREF oldColor = dc.GetTextColor();
dc.SetTextColor(RGB(255, 0, 255)); //文本颜色
dc.SetBkMode(TRANSPARENT);
dc.TextOut(rect.left+2, rect.bottom-4, strText); //文本起始位置
dc.SetTextColor(oldColor);
dc.SelectObject(pOldFont);
你想竖排显示的文字还需要动态改变的吗?我也想不起更好的办法,你可以试试用n个一个字宽度的文本框组合来显示,不过这也太麻烦了。我觉得没有必要为显示个竖排文字重新写个类吧,大不了把文字按照竖排的顺序重新排一下再显示嘛,也比重新写个类要简单的多。
每行横着写 再每行输出一个字呗。 自动换行用获取当前坐标,当字体的坐标等于你设定换行的坐标的时候,你可令你换完行的坐标副给下一字。