Golden Blonde 发表于 2022-6-1 03:42:36

【VB6】【自定义内置控件】UnicodeTextBox.ctl

这是一个“内置控件”,无需携带OCX或DLL。只需把这个文件加入到你的VB工程里,即可像使用普通TextBox一样使用这个支持UNICODE的TextBox。它支持的属性仅有几个(Flat、Text、MultiLine),也不支持任何事件。但是提供了句柄,你可以通过子类化来实现截获事件。
**** Hidden Message *****

系统消息 发表于 2022-6-1 12:37:44

本帖最后由 系统消息 于 2022-6-1 12:43 编辑

怎么感觉不对劲呢?我记得好像是 UserControl_Initialize 里面不能使用 UserControl.hWnd 吧,比较这是这对象创建的时候执行的,这个时候控件都没创建。需要在 InitProperties 和 ReadProperties 这俩事件里面进行。

系统消息 发表于 2022-6-3 10:16:53

系统消息 发表于 2022-6-1 12:37
怎么感觉不对劲呢?我记得好像是 UserControl_Initialize 里面不能使用 UserControl.hWnd 吧,比较这是这对 ...

我去试了一下,没想到居然可以用,看来是我记错了,只有 Print、Ambient 和 Extender 才是不能在 UserControl_Initialize 中使用,hWnd 是可以使用的。
最神奇的是,在你使用了 hWnd 之后,Print 就开始可以用了(原理和Form类似,隐式自动Load),但 Ambient 和 Extender 还是不能用(只有等控件与调用者把父容器连接上了才可以,这种情况要在 UserControl_InitProperties 和 UserControl_ReadProperties 里面才可以)。

0xAA55 发表于 2022-6-3 13:04:30

你这个竟然不支持事件!

VB6 里面声明事件的方法是在用户控件的开头(第一个过程或函数的前面)使用这样的语句:Public Event 事件名(参数列表)然后在应当触发事件的地方使用以下代码来触发事件:RaiseEvent 事件名(参数列表)举例:



该代码将 PictureBox 制作的“picItemList”的 Click 和 DblClick 事件包装为本控件自己的点击事件、双击事件。

类似的,KeyDown、KeyUp、MouseDown、MouseUp、MouseMove 等事件也可以像这样封装。

xiawan 发表于 2022-6-7 10:16:00

珍惜生命,果断回帖。

W741 发表于 2022-8-11 11:40:17

为什么不支持事件呢

dsm 发表于 2022-10-31 22:47:53

学习一下

二十六 发表于 2022-11-4 11:31:14

学习一下

scdn2022 发表于 2023-4-7 23:56:02

XX

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

感谢分享!
终于不用为Unicode发愁了!

444742627 发表于 2023-7-18 21:14:28

谢谢

antclt 发表于 2023-8-4 14:51:29

看看这个text控件怎么样

get43639 发表于 2023-8-19 15:43:47

來學習這個物件怎樣使用。
:(

QZhi 发表于 2024-3-16 21:22:52

感谢分享,回复学习!
页: [1]
查看完整版本: 【VB6】【自定义内置控件】UnicodeTextBox.ctl