| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 768 人关注过本帖, 1 人收藏
标题:RichTextbox控件如何根据自身宽、高,以及用户设定的字体、字号和行距,计算 ...
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
vfp好像只能用richedit的1.0版本(riched32.dll),对UTF-8不好整。
2.0/3.0(riched20.dll)、4.0( msftedit.dll),vfp好像用不了?
MS有提到动态创建方法和VS开发平台控件

3 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
以下是引用sych在2025-9-5 22:08:28的发言:


支持utf-8的
输入前需要sys(3101,65001)

这样正常
        sys(3101,65001)
        this.edit.SelText = STRCONV("abc字字123",9)
        sys(3101,0)
试试下面的,好像不行?
        STRTOFILE(0hC58B,"utf8.txt")
        sys(3101,65001)
        this.edit.SelText = FILETOSTR("utf8.txt")
        sys(3101,0)
或者:
        sys(3101,65001)
        this.edit.SelText = 0hC58B  &&或者 ""+0hC58B
        sys(3101,0)

2 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:424
专家分:648
注 册:2019-10-11
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

不知道这个是哪个版本
2 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
回复 73楼 sych
richtx32.ocx
2003的产品
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册



2 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
UTF-8的编码有多种,这个richtx32.ocx可能不兼容一些UTF-8的编码。

2 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:424
专家分:648
注 册:2019-10-11
收藏
得分:0 
以下是引用吹水佬在2025-9-6 10:00:30的发言:


这样正常
        sys(3101,65001)
        this.edit.SelText = STRCONV("abc字字123",9)
        sys(3101,0)
试试下面的,好像不行?
        STRTOFILE(0hC58B,"utf8.txt")
        sys(3101,65001)
        this.edit.SelText = FILETOSTR("utf8.txt")
        sys(3101,0)
或者:
        sys(3101,65001)
        this.edit.SelText = 0hC58B  &&或者 ""+0hC58B
        sys(3101,0)

这就是我以前的帖子说到的richtext的局限性,可以在richtext里复制、粘贴、但不能在控件外处理UNICODE字符
STRTOFILE(0hC58B,"utf8.txt")
sys(3101,65001)
this.edit.SelText = FILETOSTR("utf8.txt")
sys(3101,0)
改为下面的代码,只能用loadfile方法处理
STRTOFILE(0hc58b,"utf8.txt")
sys(3101,65001)
this.edit.loadFile("utf8.txt",1)
sys(3101,0)

2 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
回复 76楼 sych
这样也可以了,有点像从文件流输入。
但我这测试文件要带“BOM”才正常。STRTOFILE(0hC58B,"utf8.txt")不正常,STRTOFILE(0hC58B,"utf8.txt",4)正常。
1 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:424
专家分:648
注 册:2019-10-11
收藏
得分:0 
STRTOFILE(0hC58B,"utf8.txt")
sys(3101,65001)
这两句顺序颠倒一下就可以了,这样就不需要写文件头了(不知道是不是这样,我这边不存在顺序和文件头的问题)

另外如果用字符串,可以用消息传递
Declare INTEGER SendMessage in WIN32API as sendmessage_c2 INTEGER hwnd , INTEGER wMsg , INTEGER wParam , string lParam
#defi EM_REPLACESEL 0xC2
SendMessage_c2(this.edit.hwnd, EM_REPLACESEL, 1, 0hefbbbf+0hc58b)  &&这里要带上标记

[此贴子已经被作者于2025-9-6 11:20编辑过]

1 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10706
专家分:43295
注 册:2014-5-20
收藏
得分:0 
我这测试带“BOM”可不用sys(3101,65001),不带“BOM”用sys(3101,65001)也不正常。
这个richtext是不是有点老了
图片附件: 游客没有浏览图片的权限,请 登录注册
28 分钟前
快速回复:RichTextbox控件如何根据自身宽、高,以及用户设定的字体、字号和行距 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020411 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved