| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 896 人关注过本帖
标题:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容就乱码 ...
只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
请问在设计scx中加rich text控件,还可已采取类似SetUEditText(this.hUEdit, FILETOSTR(""))修
方法一:采用prg创建form对象后,可以容易获取创建对象(如hwnd,this.hUEdit),调用SetUEditText()
方法二:如果采取表单设计器,添加Actives类rich text控件 并保存,以后do form xxx 后,还可以获取
        form_xxx里rich text对象,调用类似SetUEditText()来改变现实内容吗?
不知方法二可以实现吗,还是只能从方法一入手?就是想知道类似SetUEditText()可以实现 方法二中通用吗
谢谢!

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

以下是引用吹水佬在2025-8-22 07:15:48的发言:


文件存取通常是按字节来处理,看到从文件取出来的字符乱码,有可能那只是“看到”的而并不是“取到”的字符本身,也就是说通过输出的设备不能真实还原字符,如从文件取出来的“ŋ”显示输出时变“?”了。
FILETOSTR()是较高级的文件处理函数,无需理会文件句柄,他是直接将整个文件完整载入到内存。

6 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
采取  b=Thisform.AddObject("txtRich", "OleControl", "RICHTEXT.RichTEXTCtrl.1")
 可以通过 API 直接实现 b.textrtf =  FILETOSTR("!!音标.csv") 吗?
有现成的类似SetUEditText()API吗


5 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
回复 38楼 sych -- SetWindowPos 只能实现对windows对象改位置宽高,请问对form类windows对象下的hUEdit子对象也可以直
请问 SetWindowPos 能对form类windows对象下的hUEdit子对象也可以直接修改位置宽高吗?

SetWindowPos可以实现,建议不要只是照抄代码,尝试着花点时间去理解大佬的代码是怎么实现的
我也是小白,仅当建议
5 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10659
专家分:43278
注 册:2014-5-20
收藏
得分:0 
回复 51楼 shschy

用richtext控件就看看richtext的相关参考资料。

5 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10659
专家分:43278
注 册:2014-5-20
收藏
得分:0 
关键不是SetUEditText(),SetUEditText只是读取文件。
关键是控件如何显示输出数据。
5 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:377
专家分:624
注 册:2019-10-11
收藏
得分:0 
回复 53楼 shschy
你是说的太多,做的太少
DEFINE CLASS formUEdit as Form
    ShowWindow = 2
    hUEdit     = 0
    PROCEDURE Activate
        this.hUEdit = CreateUEdit(this.hWnd)
        SetFont(this.hUEdit, 24, "Arial")
        SetFocus(this.hUEdit)
        SetUEditText(this.hUEdit, STRCONV(0h7369C58B00,12))
DECLARE INTEGER SetWindowPos IN Win32API ;
INTEGER hWnd, INTEGER InsertAfter, ;
INTEGER left, INTEGER top, ;
INTEGER width, INTEGER height, ;
INTEGER flags
SetWindowPos ( this.hUEdit,0 , ;
0, 0, ;
300, 200, ;
16)
    ENDPROC
    PROCEDURE Destroy
        DestroyUEdit(this.hUEdit)
        CLEAR EVENTS
    ENDPROC
ENDDEFINE

5 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
感谢提醒,查到SetWindowPos()是 Win32API 里已有的。回复 56楼 sych
感谢提醒,查到SetWindowPos()是 Win32API 里已有的。回复 56楼 sych
DEFINE CLASS newformUEdit as Form
    width      = 420
    height     = 700   
    ShowWindow = 2
    hUEdit     = 0
    PROCEDURE Activate
        this.hUEdit = CreateUEdit(0,0,400,700,this.hWnd)
        SetFont(this.hUEdit, 24, "Arial")
        SetFocus(this.hUEdit)
        SetUEditText(this.hUEdit, FILETOSTR("!!音标.csv"))
        DECLARE INTEGER SetWindowPos IN Win32API ;
        INTEGER hWnd, INTEGER InsertAfter, ;
        INTEGER left, INTEGER top, ;
        INTEGER width, INTEGER height, ;
        INTEGER flags
        SetWindowPos ( this.hUEdit,  0 , 0, 0, 250, 600, 16)
      &&SetWindowPos (hWnd,hWndInsertAfter,         HWND,int X          ,          int Y,  int cx,  int cy,uFlags  )
      &&SetWindowPos (目标窗口句柄,Z轴顺序的相对窗口句柄,窗口左上角X坐标,窗口左上角Y坐标,窗口宽度,窗口高度,操作标志)
    ENDPROC
    PROCEDURE Destroy
    ENDPROC
ENDDEFINE
3 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:377
专家分:624
注 册:2019-10-11
收藏
得分:0 
使用richtext控件
fname="11.txt"  &&注意这个文件是UTF-8格式的
SYS(3101,65001)
WITH thisform.Olecontrol5
    .loadFile(fname,1)
    .SelStart = 0
    .SelLength = LEN(.Text)
    .SelColor = RGB(0, 0, 255)
    .SelFontName = "黑体"
    .SelFontSize = 16
ENDWITH
SYS(3101,0)
retu
图片附件: 游客没有浏览图片的权限,请 登录注册
3 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
SetWindowPos ()在do *.PRG中可以起作用,在command.click中能起作用吗,下面click中SetWindowPos无效
command1.click 代码如下

PUBLIC txtRich_test
txtRich_test=Thisform.AddObject("txtRich", "OleControl", "RICHTEXT.RichTEXTCtrl.1")

?txtRich_test
Thisform.txtRich.visible=.t.
Thisform.txtRich.width=300
Thisform.txtRich.height=600
Thisform.txtrich.textrtf=FILETOSTR("!!音标.csv")

MESSAGEBOX("点确定后,新建txtRich类控件 尺寸改变",0,"")

SetWindowPos (txtRich_test,  0 , 0, 0, 50, 500, 16)

command1.click 代码如上
以下是引用sych在2025-8-22 09:27:25的发言:

你是说的太多,做的太少
DEFINE CLASS formUEdit as Form
    ShowWindow = 2
    hUEdit     = 0
    PROCEDURE Activate
        this.hUEdit = CreateUEdit(this.hWnd)
        SetFont(this.hUEdit, 24, "Arial")
        SetFocus(this.hUEdit)
        SetUEditText(this.hUEdit, STRCONV(0h7369C58B00,12))
DECLARE INTEGER SetWindowPos IN Win32API ;
INTEGER hWnd, INTEGER InsertAfter, ;
INTEGER left, INTEGER top, ;
INTEGER width, INTEGER height, ;
INTEGER flags
SetWindowPos ( this.hUEdit,0 , ;
0, 0, ;
300, 200, ;
16)
    ENDPROC
    PROCEDURE Destroy
        DestroyUEdit(this.hUEdit)
        CLEAR EVENTS
    ENDPROC
ENDDEFINE

3 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
谢谢 58楼 sych!但这里测试不成功,基本显示也没有,loadfile()报错,特地加了file()判断,证明文件确实存在
fname="音标UTF-8.txt"  &&注意这个文件是UTF-8格式的
IF FILE("音标UTF-8.txt")
   SYS(3101,65001)
   WITH thisform.Olecontrol5
        .loadFile("音标UTF-8.txt",1)此句报错
        .SelStart = 0
        **.SelLength = LEN(.Text)
        .SelColor = RGB(0, 0, 255)
        .SelFontName = "黑体"
        .SelFontSize = 16
   ENDWITH
   SYS(3101,0)
ENDIF
图片附件: 游客没有浏览图片的权限,请 登录注册
2 小时前
快速回复:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容 ...
数据加载中...
 
   



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

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