窗口无边框调整尺寸和移动窗口

易语言 2020-04-23 17:03:25

窗口无边框调整尺寸和移动窗口

窗口无边框调整尺寸和移动窗口开源。

.判断 (uMsg = #WM_NCHITTEST) ' 击中测试,所有的鼠标消息都先触发这个消息,然后由这个消息区分是在客户区还是非客户区
nTmp = 到整数 (编辑框1.内容)
GetWindowRect (hWnd, rc)
x = 位与 (lParam, 65535) ' 低位是X坐标
' 位与,两个都为1就返回1,65535是低16位都是1,所以高16位必须都为0,任何数与0与都得0
' 自己了解去吧
y = 右移 (lParam, 16) ' 高位是Y坐标
' 右移,这个就简单了,就是把一个数按位往右边移动,移动后前面用0补位
' ------------这里是右下角,从窗口右边减去设置的值范围内都算是右下角
rcTmp = rc
rcTmp.Left = rc.Right - nTmp ' 这里是计算鼠标到那个矩形内,窗口右边底边 - 设置的值,就是右下角
rcTmp.Top = rc.Bottom - nTmp
.如果真 (PtInRect (rcTmp, x, y))
返回 (#HTBOTTOMRIGHT) ' 在右下角,返回这个消息,告诉窗口我鼠标现在在非客户区的右下角位置
.如果真结束
' 能看懂一个就能看懂全部,后面都是一样,只是修改了矩形的位置,后面就不做备注了
' 这些常量也算好记的,分开来看 HT开头
' 左顶右底 分别是 LEFT TOP RIGHT BOTTOM
' 如果在左边 那就是 HT + LEFT = #HTLEFT 顶边 HT + TOP = #HTTOP, 底边 HT + BOTTOM = #HTBOTTOM
' 右下角 HT + BOTTOM + RIGHT = #HTBOTTOMRIGHT, 左上角 HT + TOP + LEFT = #HTTOPLEFT
' 左边顶边右底底边都直接使用英文单词,右下 左下 这些是先指定底边 在指定左右,左上左下同理