.版本 2
.支持库 spec
.支持库 iext
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.子程序 窗口自动排列, , 公开, 自动将多个窗口,整齐的排列好。
.参数 窗口句柄, 整数型, 数组, 需要自动排列的窗口句柄数组
.参数 左边间距, 整数型, , 窗口左边与左边之间的距离;如果为0,则为窗口宽度;如果为-1,则根据屏幕大小自动计算;
.参数 顶边间距, 整数型, , 窗口顶边与顶边之间的距离;如果为0,则为窗口高度;如果为-1,则根据屏幕大小自动计算;
.参数 每行数量, 整数型, , 每行几个窗口
.参数 对齐方式, 整数型, , 1.左上角;2.右上角;3.左下角;4.右下角;5.局中
.参数 新宽度, 整数型, 可空, 为0或省略时,不修改宽度
.参数 新高度, 整数型, 可空, 为0或省略时,不修改高度
.局部变量 总数, 整数型
.局部变量 行数, 整数型
.局部变量 余数, 整数型
.局部变量 矩形, 矩形x
.局部变量 临时矩形, 矩形x
.局部变量 屏宽, 整数型
.局部变量 屏高, 整数型
.局部变量 索引, 整数型
.局部变量 次数1, 整数型
.局部变量 次数2, 整数型
总数 = 取数组成员数 (窗口句柄)
.如果真 (每行数量 > 总数)
调试输出 (“每行数量 ” + 到文本 (每行数量) + “ 大于 窗口数量 ” + 到文本 (总数))
返回 ()
.如果真结束
GetWindowRect (窗口句柄 [1], 矩形)
矩形.宽度 = 矩形.宽度 - 矩形.左边
矩形.高度 = 矩形.高度 - 矩形.顶边
.如果真 (新宽度 > 0)
矩形.宽度 = 新宽度
.如果真结束
.如果真 (新高度 > 0)
矩形.高度 = 新高度
.如果真结束
屏宽 = 取屏幕宽度 ()
屏高 = 取屏幕高度 () - 40
行数 = 总数 ÷ 每行数量
余数 = 总数 % 每行数量
.如果真 (余数 > 0)
行数 = 行数 + 1
.如果真结束
' 间距处理
.如果真 (顶边间距 = 0)
顶边间距 = 矩形.高度
.如果真结束
.如果真 (左边间距 = 0)
左边间距 = 矩形.宽度
.如果真结束
.如果真 (顶边间距 = -1)
顶边间距 = (屏高 - 矩形.高度) ÷ (行数 - 1)
.如果真结束
.如果真 (左边间距 = -1)
左边间距 = (屏宽 - 矩形.宽度) ÷ (每行数量 - 1)
.如果真结束
' 计算总矩形.宽度高
临时矩形.宽度 = 矩形.宽度 + 左边间距 × (每行数量 - 1)
.如果真 (临时矩形.宽度 > 屏宽)
调试输出 (“自动排列宽度超出屏幕。”)
.如果真结束
临时矩形.高度 = 矩形.高度 + 顶边间距 × (行数 - 1)
.如果真 (临时矩形.高度 > 屏高)
调试输出 (“自动排列高度超出屏幕。”)
.如果真结束
' 计算并排列窗口位置
索引 = 1
.计次循环首 (行数, 次数1)
.如果真 (余数 > 0 且 次数1 = 行数)
每行数量 = 余数
.如果真结束
.如果真 (对齐方式 = 1) ' 左上角
临时矩形.左边 = 0
临时矩形.顶边 = (次数1 - 1) × 顶边间距
.如果真结束
.如果真 (对齐方式 = 2) ' 右上角
临时矩形.左边 = 屏宽 - 矩形.宽度
临时矩形.顶边 = (次数1 - 1) × 顶边间距
.如果真结束
.如果真 (对齐方式 = 3) ' 左下角
临时矩形.顶边 = 屏高 - 矩形.高度 - (次数1 - 1) × 顶边间距
临时矩形.左边 = 0
.如果真结束
.如果真 (对齐方式 = 4) ' 右下角
临时矩形.顶边 = 屏高 - 矩形.高度 - (次数1 - 1) × 顶边间距
临时矩形.左边 = 屏宽 - 矩形.宽度
.如果真结束
.如果真 (对齐方式 = 5) ' 居中
临时矩形.左边 = 屏宽 ÷ 2 - (矩形.宽度 + 左边间距 × (每行数量 - 1)) ÷ 2
临时矩形.顶边 = (屏高 - 临时矩形.高度) ÷ 2 + (次数1 - 1) × 顶边间距
.如果真结束
.计次循环首 (每行数量, 次数2)
_移动窗口 (窗口句柄 [索引], 临时矩形.左边, 临时矩形.顶边, 矩形.宽度, 矩形.高度, 真)
索引 = 索引 + 1
.如果真 (对齐方式 = 1) ' 左上角
临时矩形.左边 = 临时矩形.左边 + 左边间距
.如果真结束
.如果真 (对齐方式 = 2) ' 右上角
临时矩形.左边 = 临时矩形.左边 - 左边间距
.如果真结束
.如果真 (对齐方式 = 3) ' 左下角
临时矩形.左边 = 临时矩形.左边 + 左边间距
.如果真结束
.如果真 (对齐方式 = 4) ' 右下角
临时矩形.左边 = 临时矩形.左边 - 左边间距
.如果真结束
.如果真 (对齐方式 = 5) ' 居中
临时矩形.左边 = 临时矩形.左边 + 左边间距
.如果真结束
处理事件 ()
.计次循环尾 ()
临时矩形.顶边 = 临时矩形.顶边 + 顶边间距
.计次循环尾 ()
.子程序 _按钮1_被单击
.局部变量 索引, 整数型, , "0"
.局部变量 局_计次, 整数型
.局部变量 窗口句柄, 整数型, , "0"
.局部变量 错误信息
子_取选中项索引 (索引)
.计次循环首 (取数组成员数 (索引), 局_计次)
.如果真 (到整数 (超级列表框1.取标题 (索引 [局_计次], 3)) ≠ 0)
加入成员 (窗口句柄, 到整数 (超级列表框1.取标题 (索引 [局_计次], 3)))
.如果真结束
.计次循环尾 ()
' 窗口自动排列 (, , , , , , )
' '''''''''''''''''''''''''''''''以上这行命令执行操作
.子程序 子_取选中项索引
.参数 结果, 整数型, 数组
.局部变量 索引, 整数型, , "0"
.局部变量 局_计次, 整数型
.计次循环首 (超级列表框1.取表项数 (), 局_计次)
.如果真 (超级列表框1.取当前状态图片 (局_计次 - 1) = 1)
加入成员 (索引, 到整数 (超级列表框1.取标题 (局_计次 - 1, 1)))
.如果真结束
.计次循环尾 ()
结果 = 索引
.版本 2
.数据类型 矩形x
.成员 左边, 整数型
.成员 顶边, 整数型
.成员 宽度, 整数型
.成员 高度, 整数型
.版本 2
.DLL命令 GetWindowRect, 整数型, "user32.dll", "GetWindowRect", , 取窗口位置和大小
.参数 窗口句柄, 整数型
.参数 矩形区域, 矩形x
.DLL命令 _移动窗口, 整数型, "user32.dll", "MoveWindow"
.参数 窗口句柄, 整数型, , hwnd,欲移动窗口的句柄
.参数 左侧位置, 整数型, , x,窗口新的左侧位置
.参数 顶部位置, 整数型, , y,窗口新的顶部位置
.参数 新宽度, 整数型, , nWidth,窗口的新宽度
.参数 高宽度, 整数型, , nHeight,窗口的高宽度
.参数 是否重画, 逻辑型, , bRepaint,如窗口此时应重画,则设为真
|