Golden Blonde 发表于 2022-5-25 20:39:29

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

首先致谢用户【系统消息】,他的一段提示给了我很大的帮助。本贴解决了在标题栏、菜单、标签、文本框、按钮、框架、列表框、组合框、单选按钮、多选按钮上使用UNICODE的困扰,而且没有使用非自带控件,不需要开启“XP风格”,纯粹就是API调用。

解决方案:**** Hidden Message *****代码:**** Hidden Message *****使用微软控件的解决方案:https://www.0xaa55.com/thread-26612-1-1.html
各种WINDOWS控件使用范例大杂烩:https://www.0xaa55.com/thread-1421-1-3.html

系统消息 发表于 2022-5-26 18:42:44

本帖最后由 系统消息 于 2022-5-26 19:07 编辑

提示一下,HIWORD和LOWORD最好不要用除法运算,这个遇到负数的时候会有一些问题的。最好的是用结构体来做拆分:
Type DWord
      LoWord As Integer
      HiWord As Integer
End Type

Declare Function SplitDWord Lib "msvbvm60" Alias "#644"(ByVal DWord As Long) As DWord

Sub Test()
      Dim dw As DWord
      dw = SpliteDWord(&HA1B2C3D4)
      ?Hex$(dw.LoWord), Hex$(dw.HiWord)      ' 输出:C3D4      A1B2
End Sub

同理,我们也可以用此方法来拆分RGBA颜色:
Type RGBAColor
      Red As Byte
      Green As Byte
      Blue As Byte
      Alpha As Byte
End Type

Declare Function SplitRGBA Lib "msvbvm60" Alias "#644"(ByVal Color As ColorConstants) As RGBAColor

0xAA55 发表于 2022-5-25 21:35:53

竟然使用障眼法!假装用的是原生控件,但直接用 API 创建了控件。

不过很可能这个 Combobox 是可以找到办法像 YY菌 说的那样用 CallWindowProcW 设置 Unicode 的。

Ayala 发表于 2022-5-25 23:46:54

0xAA55 发表于 2022-5-25 21:35
竟然使用障眼法!假装用的是原生控件,但直接用 API 创建了控件。

不过很可能这个 Combobox 是可以找到办 ...

combox可以直接使用ImageCombo 那玩意就是系统原生的

xiawan 发表于 2022-5-26 09:19:33

非常感谢~~支持~~~

WeaponJang 发表于 2022-5-26 10:23:59

障眼法可还行,这不是变成自欺欺人了吗,

0xAA55 发表于 2022-5-26 17:11:50

WeaponJang 发表于 2022-5-26 10:23
障眼法可还行,这不是变成自欺欺人了吗,

这不叫自欺欺人,这叫实现功能。程序员的事能叫自欺欺人吗?

tlwh163 发表于 2022-5-27 06:44:59

认真学习

tlwh163 发表于 2022-5-27 06:47:43

我觉得子类化要想个办法 不然加多少个控件 就要声明多少个 函数指针变量 有点挫
是不是这样?

陈布衣 发表于 2022-5-27 12:48:45

就我不回复看不见是吗( qaq

Golden Blonde 发表于 2022-5-29 04:52:38

系统消息 发表于 2022-5-26 18:42
提示一下,HIWORD和LOWORD最好不要用除法运算,这个遇到负数的时候会有一些问题的。最好的是用结构体来做拆 ...

本意上是不想调用API,如果要调用API的话,直接用RtlMoveMemory不就行了。dim words(1) as integer
RtlMoveMemory varptr(words(0)),varptr(dword),4
loword=words(0)
hiword=words(1)

系统消息 发表于 2022-5-30 21:32:00

tlwh163 发表于 2022-5-27 06:47
我觉得子类化要想个办法 不然加多少个控件 就要声明多少个 函数指针变量 有点挫
是不是这样? ...

你的这个问题我早已解决了,我以前写过一个安全子类化组件,可以在类模块(包括窗体、用户控件等)中用WithEvents事件的方式来接收窗口消息,并且在IDE中断点调试不会崩溃。

cmd1152 发表于 2022-8-11 18:05:24

正好我写爬虫需要
因为现在的网页大多数都是UTF-8编码

发光鸵鸟 发表于 2022-9-18 06:24:02

第一季的我会了,看看第二季

scdn2022 发表于 2023-4-7 23:52:23

感谢分享

cnHopeStudio 发表于 2023-4-9 16:06:59

纯粹就是API调用?
太神奇了!

W741 发表于 2023-4-24 15:32:56

膜拜下大佬

逍遥爱迪生 发表于 2023-7-5 05:55:24

B6】【全网首发】在经典控件上使用UN

wgwangjiang 发表于 2023-7-5 11:30:54

我也学习一下!

liu496324 发表于 2023-7-6 10:07:22

认真学习
页: [1] 2
查看完整版本: 【VB6】【全网首发】在经典控件上使用UNICODE的方案(第2季)