Golden Blonde 发表于 2022-5-13 22:01:48

【VB6】【全网首发】在经典控件上使用UNICODE的方案(第1季)

基础说明:使用UNICODE有什么意义?
很多人觉得,用ANSI字符即可显示中文,用UNICODE字符有啥意义呢?使用UNICODE字符的意义在于,可以在一个字符串里同时显示多种语言。比如在中文系统里,ANSI字符串显示中文和英文没问题,但如果显示德语法语,那就会出现一片问号。所以,如果你的程序要正确显示3种(或以上)的语言,而且无论在什么系统下都不乱码,就必须使用UNICODE字符。

主要难题:如何在控件上使用UNICODE字符串?
首先,存储UNICODE字符串是没问题的,因为VB字符串是BSTR,本质上就是UNICODE字符串。
其次,调用UNICODE版本的API(就是末尾带W的API,比如MessageBoxW)也是没问题的,用StrPtr就可以拿到VB字符串的UNICODE字符数组的地址。
真正的难题在于,如何让控件正确显示UNICODE字符串。无论是直接赋值,还是通过SendMessage设置内容,你最终只能看到一串问号。

解决方案:**** Hidden Message *****代码演示:
**** Hidden Message *****程序效果:

从此图可以看出,VB窗体不能正确显示UNICODE字符串,但MessageBoxW和上文提到的控件就可以。但是,这套控件有个很邪门的地方:**** Hidden Message *****

0xAA55 发表于 2022-5-13 22:39:15

谷歌搜了一下「сладкий」大概是甜的意思吧。

你这个方法真是超出我的意料,我甚至不知道这个方法。

这套路和 VB6 常见的“XP特效美化法”很像。屌啊

陈布衣 发表于 2022-5-15 11:07:31

一开始就是这个 ANSI 的“特性”逼我走上 .NET 的道路的(
qaq

tlwh163 发表于 2022-5-15 16:48:37

学习学习

WeaponJang 发表于 2022-5-18 22:01:19

这连论坛坛主都不知道的办法,值得观摩观摩

WeaponJang 发表于 2022-5-19 12:36:40

没有找到Office97的包怎么办?

Golden Blonde 发表于 2022-5-19 14:53:12

WeaponJang 发表于 2022-5-19 12:36
没有找到Office97的包怎么办?

这个网站有很多老东西:
https://winworldpc.com/download/c80848c9-5330-11e9-8581-fa163e9022f0

xiawan 发表于 2022-5-19 14:55:36

此贴必火,占位刘留名~~~~

发光鸵鸟 发表于 2022-9-18 06:21:00

为了看unicode难题

二十六 发表于 2022-10-26 14:26:31

:o 学习一下

cnHopeStudio 发表于 2022-12-10 22:34:34

Wow!好神奇的样子!

W741 发表于 2022-12-15 17:10:10

火钳刘留名~~~~

xxdoc 发表于 2022-12-17 10:10:08

吊炸天了吧。看看莎

王者 发表于 2023-1-12 11:58:05

学习学习

工具人 发表于 2023-1-16 14:48:08

让我康康

Mat 发表于 2023-3-26 02:18:24

Good Job!:lol

scdn2022 发表于 2023-4-7 10:01:15

不错

zhaoliang 发表于 2023-5-11 22:46:51

非常感谢高手的分享

逍遥爱迪生 发表于 2023-7-5 06:19:16

在经典控件上使用UNICODE的方案

wgwangjiang 发表于 2023-7-5 11:21:40

我也来围观下!
页: [1] 2
查看完整版本: 【VB6】【全网首发】在经典控件上使用UNICODE的方案(第1季)