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

doodle 2006-09-06 12:16:50
在中文操作系统下一切正常,但在英文操作系统下中文显示为???,英文显示正常,是什么原因?琢磨两天了,不得其解!

部分声明:
//调用一个窗口的窗口函数,将一条消息发给那个窗口
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"也不行,改之后虽不显示问号了,却显示乱码

...全文
1873 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
doodle 2006-09-08
  • 打赏
  • 举报
回复
谢谢!我下午试试
仰天长啸qsx 2006-09-08
  • 打赏
  • 举报
回复
我以前自己也试了很多其他的方法,没有发现比这好的了,如果谁还有好方法,欢迎共享!
仰天长啸qsx 2006-09-08
  • 打赏
  • 举报
回复
应该在英文系统下安装pb,将生成的unicode编码复制到英文系统下,覆盖原edit source中的代码,重新在英文系统下编译,一切OK!
doodle 2006-09-08
  • 打赏
  • 举报
回复
lovemq() :
不好意思,昨天忙

英文系统下没装PB,我必须要装pb吗?还是我只把复制代码的文本文件复制到英文系统下生成unicode编码,再复制回来?

doodle 2006-09-08
  • 打赏
  • 举报
回复
周末了,结贴!
doodle 2006-09-08
  • 打赏
  • 举报
回复
在英文操作系统下装pb,调试了半下午,代码没有改动

将冒泡提示的配置文件内容转化成unicode,直接在英文操作系统下测试,OK,中文正常显示!看来这个问题可以解决了,哈哈(高兴得有点儿早了~~~)

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

什么招儿都试了,我真是不再抱什么希望了!
仰天长啸qsx 2006-09-07
  • 打赏
  • 举报
回复
用edit source打开nvo_tooltip,将代码复制到记事本中,将文件另保存为unicode编码形式,再复制eidt source中保存。试一试,应该没有问题。
---------------------------------------------------------------------
生成unicode编码形式的代码应该是在英文系统下,用edit source打开nvo_tooltip,覆盖先前的代码,保存运行就行了。在edit source中的代码就是以unicode编码形式保存的。我就是用这种方法在中文系统下正常运行繁体系统的。
sunpower99 2006-09-06
  • 打赏
  • 举报
回复
检查是不是没有中文字库!
doodle 2006-09-06
  • 打赏
  • 举报
回复
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')

显示的都是??,不同的是设置不同的字体,显示的格式不同
doodle 2006-09-06
  • 打赏
  • 举报
回复
宋体是simsun,我试试
doodle 2006-09-06
  • 打赏
  • 举报
回复
可我没用这些函数啊,只用一个left,改为leftw也一样
AFIC 2006-09-06
  • 打赏
  • 举报
回复
as_font = "宋体"
这里的问题
幼圆在英文系统下叫youyuan
他不可能还叫幼圆这两个汉字
宋体是啥我忘了,反正不可能是"宋体"
这两个汉字。
dawugui 2006-09-06
  • 打赏
  • 举报
回复
pos,posw,mid,midw的问题.
我早发现了.
doodle 2006-09-06
  • 打赏
  • 举报
回复
乖乖,按照lovemq() 的方法做了还是不行。

而且我用CreateFont,字体改成粗体、斜体都可以的,字符集是134,但就是中文显示成???,看来还是unicode的原因
仰天长啸qsx 2006-09-06
  • 打赏
  • 举报
回复
用edit source打开nvo_tooltip,将代码复制到记事本中,将文件另保存为unicode编码形式,再复制eidt source中保存。试一试,应该没有问题。
doodle 2006-09-06
  • 打赏
  • 举报
回复
//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创建的窗口的句柄

这样写,有问题吗?
doodle 2006-09-06
  • 打赏
  • 举报
回复
我用edit source看了一下,是134
但设置成134还是问号
AFIC 2006-09-06
  • 打赏
  • 举报
回复
0x86 = 8 * 16 +6 = 134
doodle 2006-09-06
  • 打赏
  • 举报
回复
谢谢!
我在createfont里设置一下试试,网上说把CharSet参数设置为简体中文的 0x86 就可以了。但不知这个0x86对应十进制是多少
AFIC 2006-09-06
  • 打赏
  • 举报
回复
就算你传给窗口,你总要显示在一个控件里边把?
你看过普通选择字体的控件马,charset就是字符集。
加载更多回复(5)

681

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧