找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3101|回复: 29

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

[复制链接]

53

主题

237

回帖

9032

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
7942 个
贡献
246 次
宅之契约
0 份
在线时间
241 小时
注册时间
2014-2-22
发表于 2022-5-25 20:39:29 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

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

解决方案:
游客,如果您要查看本帖隐藏内容请回复
代码:
游客,如果您要查看本帖隐藏内容请回复
使用微软控件的解决方案:https://www.0xaa55.com/thread-26612-1-1.html
各种WINDOWS控件使用范例大杂烩:https://www.0xaa55.com/thread-1421-1-3.html

1104

主题

1617

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
243
威望
732 点
宅币
23646 个
贡献
46207 次
宅之契约
0 份
在线时间
2268 小时
注册时间
2014-1-26
发表于 2022-5-25 21:35:53 | 显示全部楼层
竟然使用障眼法!假装用的是原生控件,但直接用 API 创建了控件。

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

30

主题

186

回帖

2604

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2009 个
贡献
206 次
宅之契约
0 份
在线时间
418 小时
注册时间
2016-7-12
发表于 2022-5-25 23:46:54 | 显示全部楼层
0xAA55 发表于 2022-5-25 21:35
竟然使用障眼法!假装用的是原生控件,但直接用 API 创建了控件。

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

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

1

主题

138

回帖

436

积分

用户组: 中·技术宅

UID
7535
精华
0
威望
0 点
宅币
297 个
贡献
0 次
宅之契约
0 份
在线时间
45 小时
注册时间
2021-10-16
发表于 2022-5-26 09:19:33 | 显示全部楼层
非常感谢~~支持~~~

4

主题

35

回帖

659

积分

用户组: 大·技术宅

UID
7138
精华
0
威望
17 点
宅币
571 个
贡献
15 次
宅之契约
0 份
在线时间
63 小时
注册时间
2021-5-11
发表于 2022-5-26 10:23:59 | 显示全部楼层
障眼法可还行,这不是变成自欺欺人了吗,

1104

主题

1617

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
243
威望
732 点
宅币
23646 个
贡献
46207 次
宅之契约
0 份
在线时间
2268 小时
注册时间
2014-1-26
发表于 2022-5-26 17:11:50 | 显示全部楼层
WeaponJang 发表于 2022-5-26 10:23
障眼法可还行,这不是变成自欺欺人了吗,

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

点评

我还知道创建BUTTON有4种方法呢:拖动控件、DIALOG资源、调用API、自绘。  发表于 2022-5-26 17:18

8

主题

151

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
5
威望
430 点
宅币
8209 个
贡献
835 次
宅之契约
0 份
在线时间
307 小时
注册时间
2018-9-19
发表于 2022-5-26 18:42:44 | 显示全部楼层
本帖最后由 系统消息 于 2022-5-26 19:07 编辑

提示一下,HIWORD和LOWORD最好不要用除法运算,这个遇到负数的时候会有一些问题的。最好的是用结构体来做拆分:
  1. Type DWord
  2.         LoWord As Integer
  3.         HiWord As Integer
  4. End Type
  5. Declare Function SplitDWord Lib "msvbvm60" Alias "#644"(ByVal DWord As Long) As DWord
  6. Sub Test()
  7.         Dim dw As DWord
  8.         dw = SpliteDWord(&HA1B2C3D4)
  9.         ?Hex$(dw.LoWord), Hex$(dw.HiWord)        ' 输出:C3D4        A1B2
  10. End Sub
复制代码

同理,我们也可以用此方法来拆分RGBA颜色:
  1. Type RGBAColor
  2.         Red As Byte
  3.         Green As Byte
  4.         Blue As Byte
  5.         Alpha As Byte
  6. End Type
  7. Declare Function SplitRGBA Lib "msvbvm60" Alias "#644"(ByVal Color As ColorConstants) As RGBAColor
复制代码

0

主题

33

回帖

646

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
279 个
贡献
110 次
宅之契约
0 份
在线时间
61 小时
注册时间
2021-9-11
发表于 2022-5-27 06:44:59 | 显示全部楼层
认真学习
回复

使用道具 举报

0

主题

33

回帖

646

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
279 个
贡献
110 次
宅之契约
0 份
在线时间
61 小时
注册时间
2021-9-11
发表于 2022-5-27 06:47:43 | 显示全部楼层
我觉得子类化要想个办法 不然加多少个控件 就要声明多少个 函数指针变量 有点挫
是不是这样?

点评

可以共用一个WndProc,只要你分得清。  发表于 2022-5-29 04:57
你可以用我搞的安全子类化组件,不仅解决每个控件都要单独一个消息处理函数的问题,还解决了在IDE下断点调试子类化的问题。  发表于 2022-5-27 16:55

11

主题

28

回帖

681

积分

用户组: 大·技术宅

UID
5148
精华
3
威望
7 点
宅币
583 个
贡献
30 次
宅之契约
0 份
在线时间
61 小时
注册时间
2019-7-17
发表于 2022-5-27 12:48:45 | 显示全部楼层
就我不回复看不见是吗( qaq

53

主题

237

回帖

9032

积分

用户组: 管理员

UID
77
精华
16
威望
237 点
宅币
7942 个
贡献
246 次
宅之契约
0 份
在线时间
241 小时
注册时间
2014-2-22
 楼主| 发表于 2022-5-29 04:52:38 | 显示全部楼层
系统消息 发表于 2022-5-26 18:42
提示一下,HIWORD和LOWORD最好不要用除法运算,这个遇到负数的时候会有一些问题的。最好的是用结构体来做拆 ...

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

点评

VB的数组效率比结构体低,另外RltMoveMemory也比VarPtr慢。我的意思主要是除非运算会有负数问题,重新声明一下VarPtr函数原型是目前的最佳方案。  发表于 2022-5-30 09:32

8

主题

151

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
5
威望
430 点
宅币
8209 个
贡献
835 次
宅之契约
0 份
在线时间
307 小时
注册时间
2018-9-19
发表于 2022-5-30 21:32:00 | 显示全部楼层
tlwh163 发表于 2022-5-27 06:47
我觉得子类化要想个办法 不然加多少个控件 就要声明多少个 函数指针变量 有点挫
是不是这样? ...

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

SafeSubclass-V0_1.zip

6.5 KB, 阅读权限: 10, 下载次数: 10

VB安全子类化

0

主题

1

回帖

15

积分

用户组: 初·技术宅

UID
8017
精华
0
威望
2 点
宅币
10 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2022-8-11
发表于 2022-8-11 18:05:24 | 显示全部楼层
正好我写爬虫需要
因为现在的网页大多数都是UTF-8编码

0

主题

2

回帖

19

积分

用户组: 初·技术宅

UID
8064
精华
0
威望
2 点
宅币
13 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2022-9-18
发表于 2022-9-18 06:24:02 | 显示全部楼层
第一季的我会了,看看第二季

0

主题

11

回帖

44

积分

用户组: 初·技术宅

UID
8289
精华
0
威望
2 点
宅币
29 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2023-4-7
发表于 2023-4-7 23:52:23 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

7

回帖

100

积分

用户组: 小·技术宅

UID
8012
精华
0
威望
2 点
宅币
89 个
贡献
0 次
宅之契约
0 份
在线时间
48 小时
注册时间
2022-8-9
发表于 2023-4-9 16:06:59 | 显示全部楼层
纯粹就是API调用?
太神奇了!

0

主题

19

回帖

53

积分

用户组: 小·技术宅

UID
7859
精华
0
威望
2 点
宅币
30 个
贡献
0 次
宅之契约
0 份
在线时间
7 小时
注册时间
2022-5-24
发表于 2023-4-24 15:32:56 | 显示全部楼层
膜拜下大佬

0

主题

2

回帖

27

积分

用户组: 初·技术宅

UID
5502
精华
0
威望
6 点
宅币
13 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2019-12-31
发表于 2023-7-5 05:55:24 | 显示全部楼层
B6】【全网首发】在经典控件上使用UN

0

主题

3

回帖

19

积分

用户组: 初·技术宅

UID
8349
精华
0
威望
2 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2023-7-5
发表于 2023-7-5 11:30:54 | 显示全部楼层
我也学习一下!

0

主题

22

回帖

39

积分

用户组: 初·技术宅

UID
8351
精华
0
威望
2 点
宅币
13 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2023-7-5
发表于 2023-7-6 10:07:22 | 显示全部楼层
认真学习
回复

使用道具 举报

本版积分规则

QQ|申请友链||Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2023-9-27 12:43 , Processed in 0.058287 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表