窗口组件边框美化附彗星窗口水印模块

易语言 2020-08-14 16:28:51

窗口组件边框美化附彗星窗口水印模块

.子程序 开启边框美化, , 公开, 给能够获取焦点的窗口(控件)美化边框
.参数 窗口句柄, 整数型, , 要美化边框那个窗口的句柄,子控件将自动美化
.参数 普通边框颜色, 整数型, 可空, 未获取焦点时的边框颜色,默认和系统一致
.参数 焦点边框颜色1, 整数型, 可空, 获取焦点之后的边框颜色1,默认为QQ那种蓝色
.参数 焦点边框颜色2, 整数型, 可空, 获取焦点之后的边框颜色2,默认为QQ那种蓝色
.局部变量 hWndFocus, 整数型

.如果真 (是否为空 (普通边框颜色))
普通边框颜色 = GetSysColor (#COLOR_WINDOWFRAME)
.如果真结束
.如果真 (是否为空 (焦点边框颜色1))
焦点边框颜色1 = 16631904
.如果真结束
.如果真 (是否为空 (焦点边框颜色2))
焦点边框颜色2 = 15182921
.如果真结束
hWndFocus = GetFocus ()
Border_SubClass (窗口句柄, hWndFocus, 普通边框颜色, 焦点边框颜色1, 焦点边框颜色2)

.子程序 Border_SubClass
.参数 hWnd, 整数型
.参数 hWndFocus, 整数型
.参数 Border_Color1, 整数型, , 未获取焦点时的边框颜色
.参数 Border_Color2, 整数型, , 获取焦点之后的边框颜色1
.参数 Border_Color3, 整数型, , 获取焦点之后的边框颜色2
.局部变量 ClassName, 文本型
.局部变量 hProc, 整数型

ClassName = 取空白文本 (#MAX_CLASS_NAME)
GetClassName (hWnd, ClassName, #MAX_CLASS_NAME)
' 判断哪些类名的窗口要加效果
.如果真 (ClassName = “Edit” 或 ClassName = “ListBox” 或 ClassName = “SysTreeView32” 或 ClassName = “SysListView32”)
hProc = GetProp (hWnd, #BORDER_HPROC)
.如果真 (hProc = 0)
hProc = SetWindowLong (hWnd, #GWL_WNDPROC, 到整数 (&Border_OnMessage))
SetProp (hWnd, #BORDER_HPROC, hProc)
.如果真结束
SetProp (hWnd, #BORDER_BFOCUS, 到整数 (hWnd = hWndFocus))
SetProp (hWnd, #BORDER_COLOR1, Border_Color1)
SetProp (hWnd, #BORDER_COLOR2, Border_Color2)
SetProp (hWnd, #BORDER_COLOR3, Border_Color3)
Border_DrawBorder (hWnd)
.如果真结束
' 自动给子窗口应用效果,递归调用本程序
hWnd = GetWindow (hWnd, #GW_CHILD)
.判断循环首 (hWnd ≠ 0)
Border_SubClass (hWnd, hWndFocus, Border_Color1, Border_Color2, Border_Color3)
hWnd = GetWindow (hWnd, #GW_HWNDNEXT)
.判断循环尾 ()