hur.cn - 华软网

 热门搜索

nvo_tooltip英文操作系统下中文显示乱码问题(pb10)

  作者:未知    来源:网络    更新时间:2018/12/6
在中文操作系统下一切正常,但在英文操作系统下中文显示为???,英文显示正常,是什么原因?琢磨两天了,不得其解!

部份声明:
//调用一个窗口的窗口函数,将一条消息发给那个窗口
Function integer ToolTipMsg(long hWnd, long uMsg, long wParam, REF TOOLINFO ToolInfo) library "user32.dll" Alias For "SendMessageA;Ansi"
//复制字符串到缓冲区
Function long lstrcpy(long Destination, string Source) library "kernel32.dll" Alias For "lstrcpy;Ansi"

部份代码
...
ToolInfo.lpszText = LocalAlloc(0,80)
POST LocalFree(ToolInfo.lpszText)
lStrCpy(ToolInfo.lpszText,'提醒')
...
ToolTipMsg(hWndTT,TTM_ADDTOOLA, 0, ToolInfo)

即使把Alias For "SendMessageA;Ansi"改成Alias For "SendMessageW",把Alias For "lstrcpy;Ansi"改成Alias For "lstrcpyW"也不行,改之后虽不显示问号了,却显示乱码


------华软网友回答------
检查是否是没有中文字库!
------华软网友回复------
是没有中文字库,但我装置了宋体。而且窗口上的中文显示都没有问题的,就是动态创建的这个提醒中文显示不正常
------华软网友回复------
没有人知道吗?
------华软网友回复------
显示的地方没指定charset
------华软网友回复------
AFIC(AFIC):怎么指定?
这个是通过SendMessageA将一条消息发送给创建的窗口,传送的是字符串的地址,怎么指定charset呀?
------华软网友回复------
而且我也设置字体为宋体,但显示照旧???.应该跟字体没关系
------华软网友回复------
就算你传给窗口,你总要显示在一个控件里边把?
你看过普通选择字体的控件马,charset就是字符集。
------华软网友回复------
谢谢!
我在createfont里设置一下试试,网上说把CharSet参数设置为简体中文的 0x86 就能够了。但不知这个0x86对应十进制是几多
------华软网友回复------
0x86 = 8 * 16 +6 = 134
------华软网友回复------
我用edit source看了一下,是134
但设置成134照旧问号
------华软网友回复------
//as_font是传送的参数,as_font = "宋体"
hFont = CreateFont(-12, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 18, as_font)
Send(hWndTT,WM_SETFONT,hFont,1)

hWndTT是用CreateWindowExA创建的窗口的句柄

这样写,有问题吗?
------华软网友回复------
用edit source打开nvo_tooltip,将代码复制到记事本中,将资料另保存为unicode编码形式,再复制eidt source中保存。试一试,应该没有问题。
------华软网友回复------
乖乖,按照lovemq() 的方法做了照旧不行。

而且我用CreateFont,字体改成粗体、斜体都能够的,字符集是134,但就是中文显示成???,看来照旧unicode的原因
------华软网友回复------
pos,posw,mid,midw的问题.
我早发现了.
------华软网友回复------
as_font = "宋体"
这里的问题
幼圆在英文系统下叫youyuan
他不可能还叫幼圆这两个汉字
宋体是啥我忘了,横竖不可能是"宋体"
这两个汉字。
------华软网友回复------
可我没用这些函数啊,只用一个left,改成leftw也一样
------华软网友回复------
宋体是simsun,我试试
------华软网友回复------
hFont = CreateFont(-12, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 18, 'youyuan')
hFont = CreateFont(-12, 0, 0, 0, 400, 0, 0, 0, 134, 0, 0, 0, 18, 'simsun')

显示的都是??,不同的是设置不同的字体,显示的格式不同

------华软网友回复------
用edit source打开nvo_tooltip,将代码复制到记事本中,将资料另保存为unicode编码形式,再复制eidt source中保存。试一试,应该没有问题。
---------------------------------------------------------------------
生成unicode编码形式的代码应该是在英文系统下,用edit source打开nvo_tooltip,笼罩先前的代码,保存运行就好了。在edit source中的代码就是以unicode编码形式保存的。我就是用这类方法在中文系统下正常运行繁体系统的。
------华软网友回复------
lovemq() :
欠好意思,昨天忙

英文系统下没装PB,我必需要装pb吗?照旧我只把复制代码的文本资料复制到英文系统下生成unicode编码,再复制回来?


------华软网友回复------
应该在英文系统下装置pb,将生成的unicode编码复制到英文系统下,笼罩原edit source中的代码,重新在英文系统下编译,一切OK!
------华软网友回复------
我以前自己也试了很多其余的方法,没有发现比这好的了,如果谁另有好方法,欢迎共享!
------华软网友回复------
谢谢!我下午试试
------华软网友回复------
在英文操作系统下装pb,调试了半下午,代码没有改动

将冒泡提醒的配置资料内容转化成unicode,直接在英文操作系统下尝试,OK,中文正常显示!看来这个问题能够解决了,哈哈(欢乐得有点儿早了~~~)

将转换后的unicode格式的配置资料拷贝到原中文系统下,运行,居然显示乱码 :( 多语言真麻烦!

什么招儿都试了,我真是不再抱什么希望了!
------华软网友回复------
周末了,结贴!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。