看来还是没说清楚。举个例子:比如要输出“我是中国人。”,而这个窗口只有五个汉字宽,要是不进行标点处理,会输出成:
我是中国人
。
但实际上DrawText()会输出成:
我是中国
人。
我是想得到第一行的字节数。最好不要自己判断逗号、句号什么的。另外还要考虑到日语、韩语等文字。谢谢。
我是中国人
。
但实际上DrawText()会输出成:
我是中国
人。
我是想得到第一行的字节数。最好不要自己判断逗号、句号什么的。另外还要考虑到日语、韩语等文字。谢谢。
解决方案 »
- 一个简单的iocp问题,请大家进来看看
- 文件的复制1.txt的内容复制到2.txt中
- 请教下将某种格式关联成用exe方式打开怎么做?
- 非常简单的问题,一时想不起怎么解决了,请帮助。
- vc,ado,access,时间段查询
- 布局new操作的问题请教: 1.为何声明的静态数组arr1 是 char 型,我在main()中依然可以用 p2=new(arr1) int;呢?这样是整型呀?
- 改变动态创建的按钮(派生出的新的按钮)上的文字字体
- 请问:如何判断程序打开了一个模态对话框?谢谢!
- 江湖救急
- sql数据库//可视化操作时,右键菜单怎么没有插入行与删除行选项呢???
- 简单
- Dib在什么时侯可以不要调色板
我没有使用 UNICODE。
还有,TEXT文本结束符到底是什么?我用CFile由于没有EOF函数,很麻烦。to ab,闪烁问题我已经解决了,不过我现在的编辑器还有点问题,主要是水平滚动条在回退键和del键的处理问题,连notepad对这个都有问题!vc++IDE就更绝了,水平滚动条总也是那么长!!
DrawText我没有用过,不过可想而知,DrawText必然最后是调用TextOut,
然而,DrawText的“智慧”是建立在编程者对“标点”的定义上去的。如果有什么地方的标点没有被他考虑在内,出的错误将会是耐人寻味的。
我在中文 Windows 下显示日文文字,发现标点调整不正确,大概 DrawText() 也有什么中文版、日文版。你是怎么处理自动换行的?自己判断标点?我统计了一下中文 Windows 版DrawText() 对简体中文的标点处理,不能领行的大概有 60 个左右,除了一些标点外,还有奇怪的  ̄︶︺﹀︾﹂﹄︼︸︱︳︴等。这些东西你怎么处理的?是自己计算,然后 TextOut() 吗?
至于真的要想“自动”处理标点换行的问题,那当然得自己计算了,编这玩意真的要好多算法,我头都大了:)
估计它的原理就是先
CRect rect;
GetClientRect(&rect);
CPaintDC dc(this);
dc.seletobject......
.....
....
CString string;//这个是你要输出的内容
....
....
输出一行时先判断
for(int pos=0;(dc.gettextextent(string,pos)>rect.width()||(pos>string.getlength());pos++);
while((string.getat(pos)!=你的标点)||pos)//pos!=0;
pos--;
dc.TextOut(xxxx,xxx,string,pos);
string=string.right(string.getlength()-pos);诸如此类的判断,必然是一大堆一大堆的,当然上面只是随便写写,完全没有解决你的问题,不过思路是在的。
算了,反正这玩意看你怎么实现的。
对了,我的每行都是一个列表,
但具我分析,windows里的editbox都是把文本放在一个字符数组里的,所以就出现了64k的限制。而且它已被固化为标准控件了。
你的字符串用的是 CString 类?那样不会有什么后遗症?比如速度、长度限制甚至 CString 擅自修改字符串之类的问题。
我也就是这样的,我每段的文字都是一个类,叫什么LineInfo,
事实上我整个文本也是一个类,叫TextInfo....它其实就相当于Document。(我没有用Doc/View)结构。