精华内容
下载资源
问答
  • 鼠标拖动对话框改变大小

    千次阅读 2013-08-22 09:55:17
    鼠标拖动对话框边缘改变大小。首先要设置对话框的Border设置为Resizing。     1.响应 WM_NCHITTEST消息   LRESULT CCVDeviceOnlineTblCompareDlg::OnNcHitTest(CPoint point) { // TODO: Add your ...

    原文出处忘了

    鼠标拖动对话框边缘改变大小。首先要设置对话框的Border设置为Resizing。

     

     

    1.响应 WM_NCHITTEST消息

     

    LRESULT CCVDeviceOnlineTblCompareDlg::OnNcHitTest(CPoint point)
    {
    	// TODO: Add your message handler code here and/or call default
    	CRect rect;
    	GetWindowRect(&rect);
    	CRect rect1 = rect;
    	rect1.DeflateRect(10, 10, -10, -10);
    	rect1.NormalizeRect();
    	if (point.x <= rect.left+3)
    		return HTLEFT;
    	else if (point.x >= rect.right-3)
    		return HTRIGHT;
    	else if (point.y <= rect.top+3)
    		return HTTOP;
    	else if (point.y >= rect.bottom-3)
    		return HTBOTTOM;
    	else if (point.x <= rect.left+10 && point.y <= rect.top+10)
    		return HTTOPLEFT;
    	else if (point.x >= rect.right-10 && point.y <= rect.top+10)
    		return HTTOPRIGHT;
    	else if (point.x <= rect.left+10 && point.y >= rect.bottom-10)
    		return HTBOTTOMLEFT;
    	else if (point.x >= rect.right-10 && point.y >= rect.bottom-10)
    		return HTBOTTOMRIGHT;
    	else if (!rect.IsRectEmpty())
    	{
    		LRESULT uRet = CWnd::OnNcHitTest(point);
    		uRet = (uRet == HTCLIENT) ? HTCAPTION : uRet;
    		return uRet;
    	}
    	else
    	{
    		return CWnd::OnNcHitTest(point);
    	}
    	return 0;
    }


     

    2.响应 WM_NCLBUTTONDOWN消息

     

    // TODO: Add your message handler code here and/or call default
    
    	if (nHitTest == HTTOP)
    	{	
    		//SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, TRUE, NULL, 0);
    		//SendMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y));
    		//SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, FALSE, NULL, 0);
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y));
    	}
    	else if (nHitTest == HTBOTTOM)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTLEFT)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_LEFT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTRIGHT)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_RIGHT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTTOPLEFT)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTTOPRIGHT)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPRIGHT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTBOTTOMLEFT)
    		SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMLEFT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTBOTTOMRIGHT)
    		SendMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMRIGHT, MAKELPARAM(point.x, point.y));
    	else if (nHitTest==HTCAPTION)
    		SendMessage(WM_SYSCOMMAND, SC_MOVE | 4, MAKELPARAM(point.x, point.y));
    	else if (nHitTest == HTREDUCE ||nHitTest == HTZOOM ||nHitTest == HTCLOSE)
    		DefWindowProc(WM_NCLBUTTONDOWN,nHitTest,MAKELPARAM(point.x, point.y));


                 其中第一个if语句注释的,为设置分割线的信息,即鼠标停止才添加,否则为拉动则添加。其中的每一个if语句为响应的处理向上、向下等方向拉动时,需要发送的消息,其中最后一个为处理最大化、最小化、关闭按钮的消息,全部交给系统处理。如果不处理此消息,当点击最小化等按钮时,不会执行响应的功能。

    展开全文
  • dialog对话框插件鼠标点击弹出可拖动对话框代码 dialog对话框插件鼠标点击弹出可拖动对话框代码 dialog对话框插件鼠标点击弹出可拖动对话框代码
  • 简单方法实现用鼠标拖动无标题栏HTML类对话框
  • 鼠标按下即可拖动对话框 点击关闭按钮即可关闭对话框 代码: CSS+HTML代码 <head> <style> * { margin: 0; padding: 0; font-family: sans-serif; } body { background-color: rg

    拖动对话框效果

    点击CLICK HERE
    在这里插入图片描述点击弹出登录界面对话框
    在这里插入图片描述鼠标按下即可拖动对话框
    在这里插入图片描述点击关闭按钮即可关闭对话框
    在这里插入图片描述代码:
    CSS+HTML代码

    <head>
       <style>
            * {
                margin: 0;
                padding: 0;
                font-family: sans-serif;
            }
    
            body {
                background-color: rgb(241, 241, 241);
    
            }
    
            .login-header {
                width: 142px;
                margin: 100px auto;
            }
    
            .login-header a {
                text-align: center;
                text-decoration: none;
                color: black;
                font-weight: 700;
                font-size: 20px;
                border: 2px solid #000;
                padding: 10px;
            }
    
            .login-header a:hover {
                color: darksalmon;
            }
    
            .login-box {
                display: none;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                width: 500px;
                height: 210px;
                background-color: #fff;
                border-radius: 18px;
                padding: 30px;
                text-align: center;
            }
    
            .login-box-bg {
                display: none;
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background: rgba(245, 144, 13, 0.3);
            }
    
            .title {
                color: darksalmon;
                font-weight: 700;
                font-size: 20px;
            }
    
            .login-input-content {
                margin: 40px;
                line-height: 35px;
            }
    
            .login-input label {
                display: inline-block;
                width: 100px;
                text-align: right;
                font-weight: 700;
                color: slategrey;
                font-size: 14px;
            }
    
            .login-btn {
                width: 100px;
                height: 30px;
                margin: 0 auto;
                line-height: 30px;
                background-color: darksalmon;
                border-radius: 5px;
                color: #fff;
                font-weight: 700;
                font-size: 12px;
            }
    
            .login-btn a {
                color: #fff;
                text-decoration: none;
            }
    
            .close-btn {
                width: 30px;
                height: 30px;
                background-color: darksalmon;
                border-radius: 50%;
                position: absolute;
                top: -10px;
                right: -10px;
                line-height: 30px;
                text-align: center;
                color: #fff;
            }
    
            .close-btn:hover {
                background-color: deepskyblue;
                cursor: pointer;
            }
        </style>
    </head>
    
    <body>
        <div class="login-header"><a href="javascript:0">CLICK HERE</a></div>
        <div class="login-box-bg"></div>
        <div class="login-box">
            <div class="title">Login to Website</div>
            <span class="close-btn">×</span>
            <div class="login-input-content">
                <div class="login-input">
                    <label>Username:</label>
                    <input type="text">
                </div>
                <div class="login-input">
                    <label>Password:</label>
                    <input type="text">
                </div>
            </div>
            <div class="login-btn"><a href="#">Login</a></div>
        </div>
     </body>
    

    JS代码:

    var mask = document.querySelector('.login-box-bg');
            var login = document.querySelector('.login-box');
            var link = document.querySelector('.login-header');
            var close = document.querySelector('.close-btn');
            //1.点击链接弹出登录对话框,背景变色
            link.addEventListener('click', function () {
                mask.style.display = 'block';
                login.style.display = 'block';
            })
            //2.点击关闭按钮,遮罩层隐藏,对话框关闭
            close.addEventListener('click', function () {
                mask.style.display = 'none';
                login.style.display = 'none';
            })
    
            // 3.拖动对话框:
            var title = document.querySelector('.title');
            title.addEventListener('mousedown', function (e) {
                //鼠标在对话框内的坐标
                var x = e.pageX - login.offsetLeft;
                var y = e.pageY - login.offsetTop;
                // 鼠标移动时,将鼠标在页面中的位置-鼠标在对话框框中的位置赋值给对话框
                document.addEventListener('mousemove', move)
                function move(e) {
                    login.style.left = e.pageX - x + 'px';
                    login.style.top = e.pageY - y + 'px';
                }
    
                //鼠标抬起时,接触鼠标移动事件
                document.addEventListener('mouseup', function () {
                    document.removeEventListener('mousemove', move);
                });
            })
    

    拖动对话框效果分析:
    (1)当鼠标在对话框中title区域按下时(mousedown),获得鼠标当前在对话框中的位置用于下面拖拽对话框的计算(用鼠标在页面中的位置-对话框在页面中的位置)
    (2)拖拽过程:不能直接将鼠标在页面中的位置直接赋值给对话框,这样会使对话框的左上角跟着鼠标一起移动。
    (3)鼠标的坐标减去鼠标在盒子内的坐标,才是对话框框真正的位置,将这个值赋值给对话框,可以实现对话框的拖动效果。

    展开全文
  • 定义头文件  QPoint move_point; //移动的距离 ... //按下鼠标左键 protected:  void mousePressEvent(QMouseEvent *event);  void mouseReleaseEvent(QMouseEvent *event);  void mouseMoveEve

    定义头文件

        QPoint move_point; //移动的距离
        bool mouse_press; //按下鼠标左键

    protected:
        void mousePressEvent(QMouseEvent *event);
        void mouseReleaseEvent(QMouseEvent *event);
        void mouseMoveEvent(QMouseEvent *event);

     

    复写实现函数:

    void Dialog::mousePressEvent( QMouseEvent * event )
    {
        //只能是鼠标左键移动和改变大小
        if(event->button() == Qt::LeftButton)
        {
            mouse_press = true;
        }

        //窗口移动距离
        move_point = event->globalPos() - this->pos();
        qDebug() << "pos()" << this->pos().x() << " " << this->pos().y() ;
        qDebug() << "globalPos()" << event->globalPos().x() << " " << event->globalPos().y() ;
    }

    void Dialog::mouseReleaseEvent(QMouseEvent *)
    {
        mouse_press = false;
    }

    void Dialog::mouseMoveEvent(QMouseEvent *event)
    {
        //移动窗口
        if(mouse_press)
        {
            QPoint move_pos = event->globalPos();
            move(move_pos - move_point);
        }
    }

     

    展开全文
  • 按住对话框顶部并移动,实现拖动效果。 点击对话框右上角×,关闭对话框。 代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" ...

    实现效果:

    点击点击按钮,弹出对话框。
    按住对话框顶部并移动,实现拖动效果。
    点击对话框右上角×,关闭对话框。
    在这里插入图片描述

    代码实现:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                top: 0;
            }
            
            .login-btn {
                width: 50px;
                height: 50px;
                line-height: 50px;
                font-size: 16px;
                text-align: center;
                margin: 100px auto;
                background-color: #1E1E1E;
                color: white;
                border-radius: 50%;
            }
            
            .login-btn:hover {
                cursor: pointer;
                background-color: #323233;
                box-shadow: 3px 3px 10px rgba(0, 0, 0, .3);
            }
            
            .bg {
                display: none;
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                background-color: rgba(0, 0, 0, .4);
            }
            
            .login {
                display: none;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                width: 300px;
                height: 200px;
                background-color: #1E1E1E;
                box-shadow: 4px 4px 15px rgba(0, 0, 0, .3);
            }
            
            .hd {
                position: relative;
                width: 100%;
                height: 26px;
                background-color: #323233;
            }
            
            .hd:hover {
                cursor: move;
            }
            
            .close {
                position: absolute;
                top: 3px;
                right: 5px;
                width: 20px;
                height: 20px;
                background-color: red;
                text-align: center;
                line-height: 20px;
                border-radius: 50%;
                box-shadow: 0 0 5px rgba(0, 0, 0, .7) inset;
            }
            
            .close:hover {
                background-color: yellow;
                cursor: pointer;
            }
        </style>
    </head>
    
    <body>
        <div class="login-btn">点击</div>
        <div class="bg"></div>
        <div class="login">
            <div class="hd">
                <div class="close">×</div>
            </div>
        </div>
        <script>
            // 获取元素
            var btn = document.querySelector('.login-btn');
            var bg = document.querySelector('.bg');
            var login = document.querySelector('.login');
            var close = document.querySelector('.close');
            var hd = document.querySelector('.hd');
    
            // 按下btn,弹出对话框
            btn.addEventListener('click', function() {
                bg.style.display = 'block';
                login.style.display = 'block';
            });
    
            // 按下close,关闭对话框
            close.addEventListener('click', function() {
                bg.style.display = 'none';
                login.style.display = 'none';
            });
    
            hd.addEventListener('mousedown', function(e) {
                // 鼠标按下对话框顶部时,获取鼠标到对话框的距离
                var x = e.pageX - login.offsetLeft;
                var y = e.pageY - login.offsetTop;
                // 鼠标按下并移动时,实时更新对话框的位置
                document.addEventListener('mousemove', move);
    
                function move(e) {
                    login.style.left = e.pageX - x + 'px';
                    login.style.top = e.pageY - y + 'px';
                }
                // 鼠标松开时,移除拖拽的动作
                document.addEventListener('mouseup', function() {
                    document.removeEventListener('mousemove', move);
                });
            });
        </script>
    </body>
    
    </html>
    
    展开全文
  • Qt实现用鼠标拖拽对话框在QWidget类中定义了两个函数void mousePressEvent(QMouseEvent *); //鼠标点击时执行的槽函数 void mouseMoveEvent(QMouseEvent *); //鼠标移动时执行的槽函数 继承自QWidget的类中可以重...
  • VS2003实现功能:在一个非模态对话框客户区(对话框没有TITLE,BORDER类型为NONE)按下鼠标左键然后移动鼠标从而拖动对话框,我如下代码,实现的效果可以拖动对话框,但在拖动的过程中对话框不停的闪烁和...
  • VC实现鼠标移动对话框窗口,对于无标题栏的对话框移动比较方便
  • 三步实现MFC对话框Boder为None对话框鼠标拖动缩放功能。 第一步,实现对话框的WM_NCHITTEST消息,代码如下: LRESULT CTestDlg::OnNcHitTest(CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 ...
  • 在对话框中做了几个按钮,例如点击按钮后画了图形,但是鼠标点击在非对话框区域,图形就会消失,想请教下,如何让鼠标点击非对话框区域的时候图形保持不变,或者说如何在拖动对话框的时候让当前对话框显示的内容保持...
  • 1. 捕获WM_NCHITTEST: UINT CMyDialog::OnNcHitTest(CPoint point){ UINT nResult = CDialog::OnNcHitTest(point);returnnResult == HTCLIENT ? HTCAPTION : nResult;}2. 捕获WM_LBUTTOND...
  • Qt无标题栏拖动对话框

    千次阅读 2013-12-05 15:57:58
    class MoveWidget : public QWidget { Q_OBJECT pulic: MoveWidget( QWidget *parent = 0 ):QWidget(parent) { } pulibc:  QPoint dragPosition; void mousePressEvent(QMouseEvent *event) ...
  • MFC拖动对话框时会出现刷新不完整

    千次阅读 2011-02-09 13:58:00
    MFC拖动对话框时会出现刷新不完整。 则在鼠标弹起时强制刷新 Invalidate(); 添加如下代码   <br /> BEGIN_MESSAGE_MAP(CClientSetParamDlg, CDialog)  ON_WM_LBUTTONUP() ...
  • 无边框模式对话框,设置鼠标拖动 1. 对话框中创建成员变量 long _icur; 2. 响应对话框类消息 WM_NCHITTEST ScreenToClient(&point); RECT rtWindow; GetClientRect(&rtWindow); long wndHeight ...
  • 喜欢没有标题栏的对话框怎么样才能让鼠标点击拖动呢?  首先当然我们要添加两个消息响应函数。在“类向导”里,找到“消息”,找到里面的“WM_NCHITEST”,然后添加处理程序。ClassInfo中可以找到。  第...
  • RT,求指导。我已经蒙了[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/0.gif][/img]
  • 今天闲来没多少事做,突发奇想自己做个弹出对话框,虽然说的是自己做但是好多东西都还是的jquery现成的东西。 废话不多说直接上代码 图片上传 $().ready(function(){ //给层3注册单击事件(就是单击关闭...
  • VC中,拖动对话框时候 对话框上面的按钮总是闪烁。代码是这样的 在dlg中buttondown事件中 发送消息 HTCAPTION,每次down下鼠标左键时候其它位图按钮都会闪烁一下,怎么才能让对话框上面的按钮不闪烁呢? void...
  • 今天做了一个小程序关于桌面图标的,运行后打开图片可用鼠标随意拖动 在构造函数中添加以下代码 setWindowFlags(Qt::FramelessWindowHint);//无边框 setAttribute(Qt::WA_TranslucentBackground); QLabel *...
  • 对话框属性 style border resizing 对话框的背景图片 也要调为对话框大小 w size 消息 OnSize(UINT nType, int cx, int cy) RedrawWindow(); 重绘对话框就可以了
  • 喜欢没有标题栏的对话框怎么样才能让鼠标点击拖动呢? 首先当然我们要添加两个消息响应函数。在“类向导”里,找到“消息”,找到里面的“WM_NCHITEST”,然后添加处理程序。 第二个消息响应函数是WM_LBUTTONDOWN...
  • 使用 WS_THICKFRAME <br />ModifyStyle(0,WS_THICKFRAME);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,607
精华内容 11,042
关键字:

如何用鼠标拖动对话框