| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 481 人关注过本帖
标题:需要VFP9中显示国际音标如ŋ,但VFP9中读取包含Unicode字符的内容就乱码 ...
只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:117
专家分: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)

11 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:117
专家分: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;
}

11 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:117
专家分:45
注 册:2022-3-13
收藏
得分:0 
已将uedit.dll文件存放在vfp9的default目录下
UEdit.dll.txt (1.65 KB)
11 小时前
sych
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:372
专家分:618
注 册: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编辑过]

10 小时前
shschy
Rank: 2
等 级:论坛游民
帖 子:117
专家分: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)

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


5 小时前
快速回复:需要VFP9中显示国际音标如&#331;,但VFP9中读取包含Unicode字符的内容 ...
数据加载中...
 
   



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

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