Uxtheme Viewer 自绘系统组件必备
.版本 2
.支持库 EXMLParser
.程序集 窗口程序集1
.子程序 A2W, 字节集
.参数 Ansi, 文本型, , 欲转换的Ansi文本
.局部变量 Unicode, 字节集
.局部变量 len
len = API_MultiByteToWideChar (936, 0, Ansi, -1, { }, 0)
Unicode = 取空白字节集 (len × 2)
API_MultiByteToWideChar (936, 0, Ansi, -1, Unicode, len × 2)
返回 (Unicode)
.子程序 __启动窗口_创建完毕
.局部变量 i, 整数型
子程序指针 = API_SetWindowLong (画板1.取窗口句柄 (), #GWL_WNDPROC, &处理)
滑块条1.最小位置 = 10
滑块条1.最大位置 = 画板1.宽度 - 20
滑块条2.最小位置 = 10
滑块条2.最大位置 = 画板1.高度 - 20
滑块条1.位置 = 画板1.宽度 - 40
滑块条2.位置 = 画板1.高度 - 40
XML.导入 (#VIEW)
组合框1.清空 ()
.计次循环首 (XML.取子节点个数 (“view”, ), i)
组合框1.加入项目 (XML.取节点值文本 (“view/@” + 到文本 (i) + “/class”, ), )
.计次循环尾 ()
组合框1.现行选中项 = 0
_组合框1_列表项被选择 ()
.子程序 处理, 整数型, , 不要修改该子程序的返回值及参数的类型!
.参数 句柄, 整数型
.参数 消息, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.局部变量 ps, PAINTSTRUCT
.判断开始 (消息 = #WM_PAINT)
API_BeginPaint (句柄, ps)
draw ()
API_EndPaint (句柄, ps)
返回 (0)
.默认
.判断结束
返回 (API_CallWindowProc (子程序指针, 句柄, 消息, 参数1, 参数2))
.子程序 _组合框1_列表项被选择
.局部变量 i, 整数型
组合框2.清空 ()
.变量循环首 (2, XML.取子节点个数 (“view/@” + 到文本 (组合框1.现行选中项 + 1), ), 1, i)
组合框2.加入项目 (XML.取节点值文本 (“view/@” + 到文本 (组合框1.现行选中项 + 1) + “/@” + 到文本 (i) + “/name”, ), 到整数 (XML.取节点值文本 (“view/@” + 到文本 (组合框1.现行选中项 + 1) + “/@” + 到文本 (i) + “/value”, )))
.变量循环尾 ()
组合框2.现行选中项 = 0
_组合框2_列表项被选择 ()
.子程序 _组合框2_列表项被选择
.局部变量 i, 整数型
组合框3.清空 ()
组合框3.加入项目 (“<NULL>”, 0)
.变量循环首 (3, XML.取子节点个数 (“view/@” + 到文本 (组合框1.现行选中项 + 1) + “/@” + 到文本 (组合框2.现行选中项 + 2), ), 1, i)
组合框3.加入项目 (XML.取节点值文本 (“view/@” + 到文本 (组合框1.现行选中项 + 1) + “/@” + 到文本 (组合框2.现行选中项 + 2) + “/@” + 到文本 (i) + “/name”, ), 到整数 (XML.取节点值文本 (“view/@” + 到文本 (组合框1.现行选中项 + 1) + “/@” + 到文本 (组合框2.现行选中项 + 2) + “/@” + 到文本 (i) + “/value”, )))
.变量循环尾 ()
组合框3.现行选中项 = 0
_组合框3_列表项被选择 ()
.子程序 draw
.局部变量 htheme, 整数型
.局部变量 hdc, 整数型
.局部变量 rect, RECT
.局部变量 class, 文本型
.局部变量 part, 整数型
.局部变量 states, 整数型
画板1.清除 (, , , )
hdc = API_GetDC (画板1.取窗口句柄 ())
API_GetClientRect (画板1.取窗口句柄 (), rect)
rect.左边 = rect.左边 + (画板1.宽度 - 滑块条1.位置) ÷ 2
rect.右边 = rect.右边 - (画板1.宽度 - 滑块条1.位置) ÷ 2
rect.顶边 = rect.顶边 + (画板1.高度 - 滑块条2.位置) ÷ 2
rect.底边 = rect.底边 - (画板1.高度 - 滑块条2.位置) ÷ 2
class = 组合框1.取项目文本 (组合框1.现行选中项)
part = 组合框2.取项目数值 (组合框2.现行选中项)
.如果真 (组合框3.取项目数 () > 0)
states = 组合框3.取项目数值 (组合框3.现行选中项)
.如果真结束
htheme = API_OpenThemeData (取窗口句柄 (), A2W (class))
API_DrawThemeBackground (htheme, hdc, part, states, rect, 0)
.如果真 (选择框1.选中)
API_DrawThemeText (htheme, hdc, part, states, A2W (编辑框1.内容), 取文本长度 (编辑框1.内容), 位或 (#DT_CENTER, #DT_VCENTER, #DT_SINGLELINE), 0, rect)
.如果真结束
.如果真 (选择框2.选中)
API_DrawThemeEdge (htheme, hdc, part, states, rect, 组合框4.取项目数值 (组合框4.现行选中项), 组合框5.取项目数值 (组合框5.现行选中项), 0)
.如果真结束
API_CloseThemeData (htheme)
API_ReleaseDC (画板1.取窗口句柄 (), hdc)
.子程序 _组合框3_列表项被选择
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 __启动窗口_将被销毁
XML.释放 ()
.子程序 _选择框1_被单击
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _滑块条1_位置被改变
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _滑块条2_位置被改变
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _组合框4_列表项被选择
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _选择框2_被单击
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _组合框5_列表项被选择
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)
.子程序 _编辑框1_内容被改变
API_InvalidateRect (画板1.取窗口句柄 (), 0, 1)