拖动窗口

13 篇文章 0 订阅

开发工具与关键技术:DW开发 JQuery插件
作者:罗中贤
撰写时间:2019-03-26

窗口作拖动 方便操作

<div class="mao">
	<div class="Mao_ltu"></div>
</div>


.mao{
	position: fixed;
	display: none; 
	width: 100%; 
	top: 0px;
	background-color: rgba(0, 0, 0, 0.8);
	z-index: 1000;
	
}
.Mao_ltu{
	width:1012px ;
	height: 612px;
	border: 2px solid #FFFFFF;
	border-radius: 10px;
	position: fixed;
}

方法

 dragPanelMove(".Mao_ltu", ".Mao_ltu");
            function dragPanelMove(downDiv, moveDiv) {
                $(downDiv).mousedown(function (e) {
                    var isMove = true;
                    var div_x = e.pageX - $(moveDiv).offset().left;
                    var div_y = e.pageY - $(moveDiv).offset().top;
                    $(document).mousemove(function (e) {
                        if (isMove) {
                            var obj = $(moveDiv);
                            obj.css({ "left": e.pageX - div_x, "top": e.pageY - div_y });
                        }
                    }).mouseup(
                        function () {
                            isMove = false;
                        });
                });

            }

如图:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现拖动窗口主体可移动,可以使用以下步骤: 1. 在窗口的消息处理函数中,处理 WM_NCHITTEST 消息,检测鼠标是否在窗口的非客户区(边框、标题栏等)。 2. 如果鼠标在非客户区,则返回 HTCAPTION,表示鼠标操作会影响窗口的位置。 3. 处理 WM_LBUTTONDOWN 消息,当鼠标左键按下时,记录鼠标的位置和窗口的位置。 4. 处理 WM_MOUSEMOVE 消息,当鼠标移动时,计算鼠标的移动距离,然后按照鼠标的移动距离,更新窗口的位置。 以下是一个示例代码: ``` LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static POINTS lastMousePos; static POINTS lastWindowPos; switch (msg) { case WM_NCHITTEST: { // 检测鼠标是否在窗口的非客户区 RECT rc; GetWindowRect(hwnd, &rc); POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; if (!PtInRect(&rc, pt)) { return HTCAPTION; } break; } case WM_LBUTTONDOWN: { // 记录鼠标和窗口的位置 lastMousePos = MAKEPOINTS(lParam); GetWindowRect(hwnd, &rc); lastWindowPos.x = rc.left; lastWindowPos.y = rc.top; break; } case WM_MOUSEMOVE: { // 计算鼠标的移动距离,并更新窗口的位置 if (wParam & MK_LBUTTON) { POINTS curMousePos = MAKEPOINTS(lParam); int dx = curMousePos.x - lastMousePos.x; int dy = curMousePos.y - lastMousePos.y; SetWindowPos(hwnd, NULL, lastWindowPos.x + dx, lastWindowPos.y + dy, 0, 0, SWP_NOSIZE | SWP_NOZORDER); } break; } // 其他消息处理 } return DefWindowProc(hwnd, msg, wParam, lParam); } ``` 这样就可以实现拖动窗口主体可移动了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值