cText类(文本控件类//不是文本框)
vb吧
全部回复
仅看楼主
level 11
余思培 楼主
一直准备写文本框控件类,但是每次写着写着就没有动力了,今天看见大佬写了个文本框控件,就想着重新捡起来(我也没准备写得
像大佬那样复杂),然后今天采用循序渐进得方式,先写了个cText文本控件类//类似于Label控件
2021年08月25日 10点08分 1
level 11
余思培 楼主
链接:[无效] https://pan.baidu.com/s/1GM3sNhs9sGbERonV77Jtow 提取码:gbpi 复制这段内容后打开百度网盘手机App,操作更方便哦
2021年08月25日 10点08分 2
level 11
余思培 楼主
该文本控件基于cArea类实现(涉及部分不多,需要得可以直接从cArea里面抠出来)
该文本控件目前支持以下方法及属性
====方法====
初始化:Init(ByVal dwID As Long)
====属性====
设置背景透明:Property Let BackTransparent(ByVal IsTrue As Boolean)(暂不实装)
设置背景颜色:Property Let BackColor(ByVal crSet As Long)
设置文本颜色:Property Let TextColor(ByVal crSet As Long)
设置字体大小:Property Let FontSize(ByVal dwSize As Long)
设置矩形区域:Property Let SetRect(ByRef sSet As RECT)
该文本控件 设置背景透明 未实装原因是该功能需要重写绘图逻辑,故暂未实装
2021年08月25日 10点08分 3
level 11
余思培 楼主
类代码
测试部分代码
2021年08月25日 10点08分 4
level 11
能搞个listbox类似的控件吗?就是表格的,那个listbox的限制太多,列数只有10。
2021年08月25日 10点08分 5
有大佬有写过表格控件,你在贴吧里搜索一下应该能够找到
2021年08月25日 10点08分
level 11
余思培 楼主
目前拟写cBox类(文本框控件)遇到的思维问题
1.关于多行文本,采用哪一种逻辑进行储存(数据结构问题)
1)连续储存机制
2)分页储存机制
2.选择内容的绘制
1)光标闪烁要怎样绘制才不会影响用户响应(即在闪烁期间怎样保证界面不假死)
2)多行文本的选择(如果采用分页机制)如何处理
3)选择部分的重绘应到采用那种机制(覆盖?)
2021年08月25日 11点08分 6
光标用API,千万不要自己绘制,开销太大。CreateCaret,SetCaretPos,ShowCaret,HideCaret这4个API,并且api实现的光标会自动根据背景色转变颜色,深色背景自动表变色光标,浅色背景自动变黑色光标
2021年08月25日 11点08分
先做单行,多行比单行复杂很多,有能力再考虑多行,光标可以采用楼上的方法,也可以用GDI的画线函数画,用Timer控件或SetTimer函数后WM_TIMER消息中处理
2021年08月25日 12点08分
CreateCaret的光标闪烁依赖系统的光标闪烁频率设置,如果系统设置过快的闪烁光标你的文本框控件光标也会随之, SetCaretBlinkTime可以设置光标闪烁频率,当然如果不想依赖系统设置也只能用Timer控件或SetTimer等函数解决
2021年08月25日 12点08分
吧务
level 14
你这控件相较于原来的label有什么不同之处吗?
2021年08月25日 11点08分 7
没有,但是可以在我自己掌握的情况下创建(主要是API创建的窗口不知道怎么添加控件,或者说添加了控件与cArea类的逻辑不符),此外是为了写文本框控件做准备
2021年08月25日 11点08分
@余思培 用api创建的窗口会返回一个句柄,在接受到窗口消息之后通过窗口的句柄创建控件,理论上可以实现。
2021年08月25日 12点08分
@马云爱逛京东 那不叫“理论上”,而是事实。CreateWindowEx的第9个参数,就是指定“父窗口”(就是指定新创建的控件放在哪个“容器窗口”内)
2021年08月28日 09点08分
1