[原创] 实现不同颜色文字的TextBox
vb吧
全部回复
仅看楼主
level 6
zzmzzff 楼主
TextBox默认无法设置不同文字颜色,今天我们来强制改变它,为TextBox增加不同颜色以及底纹效果,着色速度比RichTextBox快N倍。
2015年12月23日 10点12分 1
level 6
zzmzzff 楼主
2015年12月23日 10点12分 2
level 6
zzmzzff 楼主
2015年12月23日 11点12分 4
level 6
zzmzzff 楼主
2015年12月23日 11点12分 5
忘记发测试文件,下这个http://pan.baidu.com/s/1N00J8
2015年12月23日 11点12分
@zzmzzff 楼主,除了测试文件,剩下的连接全挂了,求补链
2018年02月28日 05点02分
@zzmzzff 感谢前辈,还以为这个帖子沉了呢[太开心]
2018年03月01日 12点03分
level 14
[真棒][真棒][真棒]太棒了!
2015年12月23日 11点12分 6
加载速确实超快[真棒]
2015年12月23日 11点12分
level 6
zzmzzff 楼主
前段时间在写一个文本编辑器,谁知最后着色成了问题,richtextbox实在太慢,和EverEdit差太远了,无奈换成TextBox,后来发现改造后的Text控件居然速度堪比EverEdit,或许EverEdit和原理和我的一样,也是重绘文本,除此之外,实在想不到再快的办法。
2015年12月23日 11点12分 7
更快的方法只有用DX去渲染啦[滑稽]
2015年12月24日 12点12分
level 6
zzmzzff 楼主
稍.后.将.公.布.源.码
2015年12月23日 11点12分 8
level 7
[真棒]支持
2015年12月23日 11点12分 9
level 13
[真棒]
2015年12月23日 12点12分 10
level 1
这种东西,玩玩可以,实际谁敢使用呢?关键是稳定性不行。--未测试之前的断言。
2015年12月23日 12点12分 11
事实证明,非常稳定,这是同进程hook的好处,这个hook模块最早来自vbgood,后来我一直在用,从未出过问题,如果遇到新线程可以暂时关闭hook,然后结束后再打开即可。
2015年12月23日 12点12分
我准备把它应用到我的新作品FlyEdit上面,本来已经完成80%,现在看来又得忙一阵了
2015年12月23日 12点12分
level 6
zzmzzff 楼主
先上核心代码,稍后会打包
Private Sub Form_Load()
m_InitKeyWord
VBCode = MyTBox.Text
g_TextHwnd = MyTBox.hwnd
'复制文本框的字体,注意不能用Font属性,另外个别英文字体可能不支持,需进行编码转换
Me.FontName = MyTBox.FontName
Me.FontSize = MyTBox.FontSize
Me.FontBold = MyTBox.FontBold
Me.FontItalic = MyTBox.FontItalic
Me.ScaleMode = vbPixels
g_LineHeight = Me.TextHeight("0")
optColor(0).Value = True
Me.Show
SetHook
chkHook.Value = 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unhook
End Sub
Private Sub chkHook_Click()
g_Hook = chkHook.Value
MyTBox.Refresh
End Sub
'VB关键字
Sub m_InitKeyWord()
g_KeyWord = Array("
#Const", "#
If", "#Else", "Let", "Const", "Dim", "Private", _
"Public", "New", "Static", "Option", "Not", "And", "Or", "Xor", "Eqv", "Imp", _
"Mod", "Like", "Is", "Error", "Raise", "On", "GoTo", "Resume", "Do", "Loop", "For", _
"Next", "Each", "While", "Wend", "With", "If", "Then", "Else", "ElseIf", "Select", _
"Case", "Switch", "Call", "Function", "Sub", "End", "Exit", "Get", "Set", "Property", _
"Open", "Close", "As", "Print", , "Input", "Line", "Put", "Seek", "TypeOf", "Nothing", _
"AddressOf", "ByRef", "ByVal", "Empty", "False", "Friend", _
"Optional", "Lock", "Step", "To", "True", "WithEvents", "Explicit", "Base", "Declare", _
"Type", "Lib", "Alias", "Enum", "ReDim", "Preserve", "Write", "Begin", "Erase", "GoSub", _
"Return", "Stop", "RaiseEvent", "Compare", "Debug", _
"CBool", "CByte", "CCur", "CDate", "CDbl", "CDec", "CInt", "CLng", _
"CSng", "CStr", "CVar", "LBound", "UBound", _
"Long", "Integer", "Single", "Double", "String", "Boolean", "Date", _
"Byte", "Currency", "Decimal", "Object", "Variant", "Any")
g_KeyLength = UBound(g_KeyWord) + 1
End Sub
2015年12月23日 12点12分 12
level 6
zzmzzff 楼主
发出去的代码空格都没了,忘了网页限制了
if 1=1 then
    aaaa=1
end if
2015年12月23日 12点12分 13
level 1
顶起!这么好的贴不能让伸手贴给淹没了
2015年12月24日 00点12分 14
吧务
level 13
不错,不错,正好新的vb7没有代码显示界面。
2015年12月24日 02点12分 15
黑的漂亮
2016年01月03日 16点01分
丧(Gan)心(De)病(Piao)狂(Liang)
2016年12月11日 04点12分
[滑稽]
2017年10月22日 03点10分
level 11
很好很强大!
2015年12月24日 03点12分 17
1 2 3 4 5 尾页