| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1593 人关注过本帖
标题:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容就乱码 ...
取消只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分:45
注 册:2022-3-13
收藏
得分:0 
您好!您发的UEdit_dll.rar已经基本实现功能需求,只是需要将huedit控件对象left、top、width、height可调即可
您好!这个rar包里的scx文件已经满足基本功能,这里可以按需调整huedit控件的显示文件
SetUEditText(of.hUEdit, FILETOSTR("!!音标1.csv")),可以根据英文单词显示指定csv文件。
指定csv文件可以包含50个单词音标,只要根据英文单词找到打开哪个csv文件即可显示。

这里需要将huedit控件对象left、top、width、height可调即可,
可以从 of.hUEdit查看到某个值,估计这个值就是 句柄。
(1)但不会API调句柄,改对象位置和大小。
(2)也无法做到uedit.c文件增加控制huedit对象left、top、width、height参数语句,并编译。
     这个估计还要装C软件,实现编译dll,重新拷贝如电脑
是否以上两个方法之一,就可以实现of.huedit"对象"修改位置、宽高数值?
如果版主能再帮忙uedit.c里加个方法,实现huedit"对象"修改位置、宽高数值,再编译上传就好!
不好意思,再问一下,是只要uedit.c修改重新编译,只拷贝uedit.dll文件覆盖就可以吗?
谢谢!

以下是引用吹水佬在2025-8-21 10:59:41的发言:


整个示例是简单测试用的,没有实用价值。
会用C语言编程可参考看看有无可用之处。

2025-08-21 11:49
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分:45
注 册:2022-3-13
收藏
得分:0 
只作显示用,增加设置编辑框的位置,大小、字体的名称和大小颜色、滚动条即可。
只作显示用,增加设置编辑框的位置,大小、字体的名称和大小颜色、滚动条即可。
谢谢
以下是引用吹水佬在2025-8-21 15:57:46的发言:

如果只作显示用,增加设置编辑框的位置和大小、字体的名称和大小颜色、滚动条等。
如果要作编辑数据用,要考虑的问题不少,如焦点问题,鼠标键盘事件等。

2025-08-21 19:59
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分:45
注 册:2022-3-13
收藏
得分:0 
感谢支持,只要先初始uedit控件高度为700即可,主窗口界面可以按此高度设置,发生新查询就调用uedit.prg
感谢版主的支持。只要先初始uedit控件高度为700即可,主窗口界面可以与包含uedit控件表单高度设置一样,发生新查询就调用uedit.prg
这里也继续研究winapi。
看到vfp9.0中“SetUEditText(this.hUEdit, FILETOSTR("!!音标.csv"))”
好像含unicode编码文件经 vfp9.0里的FILETOSTR()也能转入,
那关键在于如何实现将FILETOSTR()的句柄《不知是这个术语吗》经非VFP的API再次转向到uedit控件的。


DEFINE CLASS formUEdit as Form
    width      = 500
    height     = 500   
    ShowWindow = 2
    hUEdit     = 0
    PROCEDURE Activate
        this.hUEdit = CreateUEdit(this.hWnd) &&在formedit表单对象里创建一个huedit文本框对象
        SetFont(this.hUEdit, 24, "Arial")
        SetFocus(this.hUEdit)
       SetUEditText(this.hUEdit, FILETOSTR("!!音标.csv"))
    ENDPROC
    PROCEDURE Destroy
        DestroyUEdit(this.hUEdit)
        CLEAR EVENTS
    ENDPROC
ENDDEFINE

以下是引用吹水佬在2025-8-21 22:18:56的发言:

抽空再试试吧,现在要带小孩有点困身。

收到的鲜花
  • trial032025-08-22 08:56 送鲜花  1朵  
2025-08-21 23:07
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分:45
注 册:2022-3-13
收藏
得分:0 
新rar下载测试,可使用。感谢一早解答
新rar下载测试,可使用。感谢一早解答
以下是引用吹水佬在2025-8-22 07:15:48的发言:


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

2025-08-22 07:51
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分: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()是较高级的文件处理函数,无需理会文件句柄,他是直接将整个文件完整载入到内存。

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


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

SetWindowPos可以实现,建议不要只是照抄代码,尝试着花点时间去理解大佬的代码是怎么实现的
我也是小白,仅当建议
2025-08-22 09:13
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分: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
2025-08-22 11:16
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分: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

2025-08-22 11:39
shschy
Rank: 2
等 级:论坛游民
帖 子:134
专家分: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
图片附件: 游客没有浏览图片的权限,请 登录注册
2025-08-22 12:07
快速回复:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容 ...
数据加载中...
 
   



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

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