| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1063 人关注过本帖
标题:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容就乱码 ...
只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
这段代码尝试过,microsoft form textbox控件里还是乱码
STRTOFILE(0h0073+0h0069+0hC58B,"oldtmp.txt") &&存 sing的音标到 oldtmp.txt文档
SYS(3101,65001)
thisform.Olecontrol1.text=STRCONV(filetostr("oldtmp.txt"),10)
SYS(3101,0)

以下是引用sych在2025-8-20 08:37:08的发言:

这样修改即可
SYS(3101,65001)
thisform.Olecontrol1.text=STRCONV(filetostr("d:\unicode.text"),10)
SYS(3101,0)

6 天前 08:53
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
uedit.dll文件可以放在vfp9的default目录下吗?还需要做什么
图片附件: 游客没有浏览图片的权限,请 登录注册


以下是引用吹水佬在2025-8-20 08:41:48的发言:

测试了一下,用windows api也可以用EDIT控件
有兴趣可以参考测试代码


CLEAR
CLEAR ALL

PUBLIC cDefPath
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)

DECLARE Long SetFocus     IN user32 long
DECLARE Long CreateUEdit  IN UEdit long
DECLARE Long DestroyUEdit IN UEdit long
DECLARE Long SetUEditText IN UEdit long,string
DECLARE Long SetFont      IN UEdit long,long,string

of = CREATEOBJECT("formUEdit")
of.show()
READ EVENTS
 
CLOSE TABLES ALL
CLEAR ALL
RETURN

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))
    ENDPROC
    PROCEDURE Destroy
        DestroyUEdit(this.hUEdit)
        CLEAR EVENTS
    ENDPROC
ENDDEFINE


为测试方便用C写UEdit.dll给vfp调用

#define DLLIMPORT __declspec(dllexport)

#include <windows.h>

HINSTANCE hInstance = NULL;

DLLIMPORT void SetUEditText(HWND hWndUEdit, LPCWSTR pWSTR)
{
    SetWindowTextW(hWndUEdit, pWSTR);
}

DLLIMPORT void SetFont(HWND hWndUEdit, int cHeight, LPCSTR pFontName)
{
    HFONT hFont = CreateFont(cHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
                              OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                              DEFAULT_PITCH, pFontName);
    SendMessage(hWndUEdit, WM_SETFONT, (WPARAM)hFont, TRUE);
}

DLLIMPORT void DestroyUEdit(HWND hWndUEdit)
{
    DestroyWindow(hWndUEdit);
}

DLLIMPORT HWND CreateUEdit(HWND hWndParent)
{
    return CreateWindowExW(
        0,                                                  // 无扩展样式
        L"EDIT",                                            // 预定义EDIT类名
        L"",                                                // 初始文本为空
        WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE,   // 样式
        10, 10, 100, 100,                                    // 位置和尺寸
        hWndParent,                                         // 父窗口句柄
        0,                                                  // 控件ID
        hInstance,                                          // 程序实例句柄
        NULL                                                // 无附加参数
        );

}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
    switch(fdwReason)
    {
        case DLL_PROCESS_ATTACH:
        {
            hInstance = hinstDLL;
            break;
        }
    }
    return TRUE;
}

6 天前 09:05
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
已将uedit.dll文件存放在vfp9的default目录下
UEdit.dll.txt (1.65 KB)
6 天前 09:08
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:379
专家分:627
注 册:2019-10-11
收藏
得分:0 
回复 21楼 shschy
只需稍加修改即可
STRTOFILE(0h73+0h69+0hC58B,"oldtmp.txt") &&存 sing的音标到 oldtmp.txt文档
SYS(3101,65001)
thisform.Olecontrol1.text=filetostr("oldtmp.txt")
SYS(3101,0)

[此贴子已经被作者于2025-8-20 10:34编辑过]

6 天前 10:17
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
这段代码测试后无效,发现只要经过vfp函数等任何操作,音标的unicode码都是乱码,或者无显示
这段代码测试后无效,发现只要经过vfp函数等任何操作,音标的unicode码都是乱码,或者无显示

以下是引用sych在2025-8-20 10:17:49的发言:

只需稍加修改即可
STRTOFILE(0h73+0h69+0hC58B,"oldtmp.txt") &&存 sing的音标到 oldtmp.txt文档
SYS(3101,65001)
thisform.Olecontrol1.text=filetostr("oldtmp.txt")
SYS(3101,0)

6 天前 11:19
cssnet
Rank: 5Rank: 5
等 级:职业侠客
威 望:5
帖 子:454
专家分:372
注 册:2013-10-4
收藏
得分:2 
https://www.
唉,每当看到有人讨论Unicode for VFP,我就会热心地贴这个帖子。
都快成月经帖啦。


6 天前 14:29
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
西风帖子已经看过了,只是没能学到解决方法。希望在平台上能解决。只是希望根据单词找到音标显示
您好!西风帖子已经看过了,只是没能学到解决方法。希望在平台上能解决。只是希望根据单词找到音标显示。原来的数据整理到类似如下csv文件中
!!音标.csv.txt (368 Bytes)

以下是引用cssnet在2025-8-20 14:29:37的发言:

https://www.
唉,每当看到有人讨论Unicode for VFP,我就会热心地贴这个帖子。
都快成月经帖啦。

6 天前 22:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10660
专家分:43278
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
6 天前 23:00
shschy
Rank: 2
等 级:论坛游民
帖 子:132
专家分:45
注 册:2022-3-13
收藏
得分:0 
上层版主,能提供uedit.dll文件吗,帖子里的拷贝到写字板,另存为uedit.dll,但regsv 32 报错
上层版主,能提供uedit.dll和form1.scx文件吗,帖子里的拷贝到写字板,另存为uedit.dll,但regsv 32 报错
以下是引用吹水佬在2025-8-20 23:00:25的发言:

6 天前 23:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10660
专家分:43278
注 册:2014-5-20
收藏
得分:0 
以下是引用shschy在2025-8-20 23:22:52的发言:

上层版主,能提供uedit.dll和form1.scx文件吗,帖子里的拷贝到写字板,另存为uedit.dll,但regsv 32 报错

uedit.dll是api动态扩展库,不用注册,好像调用win32 api 一样用。
只是一个可行性测试,调用 windows api 来实现vfp对Unicode的有限支持,离实际应用还有很多细节的地方要考虑。
个人认为能用windwos api实现的就尽量不用第三方和东西,这样对以后的扩展和兼容性有保障。
_UEdit_dll.rar (33.69 KB)




[此贴子已经被作者于2025-8-21 07:40编辑过]

收到的鲜花
  • trial035 天前 10:56 送鲜花  1朵  
5 天前 07:25
快速回复:需要VFP9中显示国际音标如&#331;,但VFP9中读取包含Unicode字符的内容 ...
数据加载中...
 
   



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

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