|
发表于 2011-11-25 00:07:27
|
显示全部楼层
不知道在其他语言里情况如何,但是在易语言中,设置完新的位置后不需要重绘该控件的,我测试过。
但是其父级(窗口或控件会在原始位置留下灰色区域,窗口最小化恢复后消失,或者使用代码重绘其父级)
以下是易语言写的控件移动部分,因为是中文语言,相信没接触过的也很容易读:
- .版本 2
- .子程序 移动, , 公开, 设置控件位置或大小
- .参数 左边, 整数型, 可空
- .参数 顶边, 整数型, 可空
- .参数 宽度, 整数型, 可空
- .参数 高度, 整数型, 可空
- .局部变量 局部_父级资源, 整数型
- .局部变量 局部_重画类型, 整数型, , , 0-无重画,1-重画控件,2-重画窗口
- .局部变量 局部_重画矩形, RECT
- .局部变量 局部_移动矩形, RECT
- .如果真 (是否为空 (左边) 且 是否为空 (顶边) 且 是否为空 (宽度) 且 是否为空 (高度))
- 返回 ()
- .如果真结束
- XEle_GetRect (成员_资源句柄, 局部_移动矩形)
- 局部_父级资源 = 取父级控件资源句柄 ()
- .如果 (局部_父级资源 ≠ 0)
- 局部_重画类型 = 1
- .否则
- 局部_父级资源 = 取所在窗口资源句柄 ()
- .如果真 (局部_父级资源 ≠ 0)
- XEle_GetWndNCClientRect (成员_资源句柄, 局部_重画矩形)
- 局部_重画类型 = 2
- .如果真结束
- .如果结束
- .如果真 (取反 (是否为空 (左边)))
- 局部_移动矩形.right = 局部_移动矩形.right - 局部_移动矩形.left + 左边
- 局部_移动矩形.left = 左边
- .如果真结束
- .如果真 (取反 (是否为空 (顶边)))
- 局部_移动矩形.bottom = 局部_移动矩形.bottom - 局部_移动矩形.top + 顶边
- 局部_移动矩形.top = 顶边
- .如果真结束
- .如果真 (取反 (是否为空 (宽度)))
- 局部_移动矩形.right = 局部_移动矩形.left + 宽度
- .如果真结束
- .如果真 (取反 (是否为空 (高度)))
- 局部_移动矩形.bottom = 局部_移动矩形.top + 高度
- .如果真结束
- XEle_SetRect (成员_资源句柄, 局部_移动矩形)
- .判断开始 (局部_重画类型 = 1)
- XEle_ReDrawEle (局部_父级资源)
- .判断 (局部_重画类型 = 2)
- XWnd_ReDrawWndRect (局部_父级资源, 局部_重画矩形, 真)
- .默认
- .判断结束
-
复制代码
|
|