默認(rèn)情況下,我們都是用的微軟的記事本,也就是txt文本,文本選中的背景顏色一直都是藍(lán)色的,有木有?有很多人可能已經(jīng)習(xí)慣了這種藍(lán)色,但是也有人不想拘泥于這種顏色,想換一換、改變下心情。這里,小編給大家?guī)硪豢钗谋具x定背景顏色修改工具,絕對實用。需要的朋友可以下載試試哦!
怎么修改文本選定背景顏色
文本選定背景顏色修改工具使用方法
Text的背景高亮色是藍(lán)色不好看?還是RichTextBox的黑色好看,但Rich打開特殊字符會出錯,怎么辦呢?改了它即可,而且可以改成任意想要的顏色。通過測試,發(fā)現(xiàn)系統(tǒng)在調(diào)用一個SetBkColor的API,于是我們可以在它將要設(shè)置textbox的高亮色時吃掉它,改成自己的顏色。 依此類推,可以改變ListView的選定項背景或其它控件的顏色。
可以完美修改成你想要的任意顏色
文本選定背景顏色修改工具核心代碼:
'********************* 改變TextBox選定背景色 *********************
VB代碼,VB學(xué)習(xí)者可參考!
'frm_Main
Option Explicit
Private CustomColor(0 To 15) As Long
Private Sub Form_Load()
Text1.Text = "這是一個普通的TextBox"
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
MyTBox.Text = "這是一個修改后的TextBox,該程序用來測試修改Text高亮背景色"
MyTBox.SelStart = 0
MyTBox.SelLength = Len(MyTBox.Text)
MyTBox.TabIndex = 0
g_TextHwnd = MyTBox.hWnd
g_NewColor = vbBlack
chkHook.Value = 1
Me.Show
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unhook
End Sub
Private Sub chkHook_Click()
g_Hook = chkHook.Value
MyTBox.Refresh
End Sub
Private Sub cmdColor_Click(Index As Integer)
If Index = 0 Then
g_NewColor = vbBlack
ElseIf Index = 1 Then
g_NewColor = vbRed
Else
'custom
Dim uColor&
uColor = ShowColorDialog(Me.hWnd, g_NewColor, CustomColor(0))
If uColor >= 0 Then g_NewColor = uColor
End If
MyTBox.Refresh
End Sub
'mod_Main
Option Explicit
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
Private Declare Function GetSysColor Lib "user32.dll" (ByVal nIndex As Long) As Long
Private Declare Function WindowFromDC Lib "user32" (ByVal hdc As Long) As Long
Private MyHook As cls_HookApi '自定義hook
Private HighLightColor As Long
Public g_Hook As Boolean
Public g_TextHwnd As Long
Public g_NewColor As Long
Sub Main()
App.TaskVisible = False
m_InitSysColor '獲取系統(tǒng)高亮顏色值
Set MyHook = New cls_HookApi
MyHook.HookApi "gdi32.dll", "SetBkColor", GetFunAddr(AddressOf SetBkColor_Callback), GetCurrentProcess
Load frm_Main
End Sub
'初始化系統(tǒng)顏色
Sub m_InitSysColor()
HighLightColor = GetSysColor(vbHighlight And &HFF)
End Sub
'回調(diào)
Public Function SetBkColor_Callback(ByVal hdc As Long, ByVal crColor As Long) As Long
MyHook.HookStatus False
If g_Hook Then
If WindowFromDC(hdc) = g_TextHwnd And crColor = HighLightColor Then
crColor = g_NewColor
End If
End If
SetBkColor_Callback = SetBkColor(hdc, crColor)
MyHook.HookStatus True
End Function
Public Function GetFunAddr(lngFunAddr As Long) As Long
GetFunAddr = lngFunAddr
End Function
Sub Unhook()
Set MyHook = Nothing
End Sub
- PC官方版
- 安卓官方手機版
- IOS官方手機版