鼠标单击窗口标题栏,不能拖动窗口

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 

afx_msg UINT OnNcHitTest( CPoint point );

 

UINT C***Dlg::OnNcHitTest( CPoint point )

{

        UINT nHitTest;

        nHitTest = CWnd::OnNcHitTest( point ); 

        if( nHitTest == HTCAPTION ) 

        {

                nHitTest = HTCLIENT;  //Client鼠标单击是不可以拖动的

        }

        return nHitTest;       

}

在消息映射中添加映射:

ON_MESSAGE( WM_NCHITTEST, OnNcHitTest )

 

如果是想点击客户端拖动界面可是使用相反的方法:

UINT C***Dlg::OnNcHitTest( CPoint point )

{

        UINT nHitTest;

        nHitTest = CWnd::OnNcHitTest( point );

        if( nHitTest == HTCLIENT )

        {

                nHitTest = HTCAPTION;  // 点击客户区(除了界面上的控件)可以拖动对话框

        }

        return nHitTest;      

}

 
C# WPF窗口任意拖动实现:原理、方案与实战避坑指南 在桌面应用开发中,窗口交互是用户体验的核心环节。传统窗口拖动依赖于系统标题栏,其原理是通过处理Windows消息(如WM_NCLBUTTONDOWN)来触发系统级的窗口移动操作。这一机制为应用提供了基础的拖拽功能,但在追求极致界面设计的今天,其技术价值受到挑战。随着无边框窗口、自定义标题栏和异形窗口设计的普及,开发者需要在非客户实现流畅的拖动交互,这直接关系到应用的视觉统一性和操作沉浸感。在游戏启动器、媒体播放器、工业控制面板等应用场景中,实现任意拖动已成为提升产品专业度的关键技术。本文聚焦于WPF框 阅读详情

相关推荐

自定义无边框窗口标题栏的可拉伸和拖动功能 - Qt5/通用 - Windows和Linux

Qt Creator中,选择"新建项目",然后选择"Qt Widgets应用程序"。在"类信息"页面上,将类名设置为"CustomWindow"并选择"窗口类",然后单击"下一步"。在"项目配置"页面上,保留默认设置,然后单击"完成"。在本文中,我们将探讨如何使用Qt5创建一个无边框窗口,并为其添加自定义的标题栏。现在,我们需要创建一个自定义的窗口类,该类将扩展Qt的QWidget类,并处理窗口的外观和行为。在上面的代码中,我们创建了一个CustomWindow类的实例,并将其设置为主窗口的中心部件。

TechRoarX的博客 548

拖动窗口并移动窗口位置

该功能常见于滑动验证码 HTML部分 <div id="box"> <div id="title">按住拖动</div> </div> css部分 <style> * { padding: 0; margin: 0; } ...

weixin_33714884的博客 1415

单击窗口任何位置,都能拖动窗口

一 代码 PostMessage (WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM (point.x, point.y)) 二 解释 HTCAPTION 点击标题 模拟鼠标点在标题栏上,单击窗口任何位置都可以拖动窗口。 ...

字节跳动 1158

鼠标单击窗口标题栏以外域移动窗口

移动标准窗口是通过用鼠标单击窗口标题栏来实现的,但对于没有标题栏窗口,就需要用鼠标单击窗口标题栏以外域来移动窗口。有两种方法可以达到这一目标。 方法一:当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处理该消息,使得只要鼠标窗口内,Windows便认为鼠标标题栏上。这需要重载CWnd类处理WM_NCHITTEST消息的OnNcHitTest函数,

zhoulunchongqing的专栏 999

Ubuntu 鼠标可以移动不能点击的问题

之前Ubuntu 在使用eclipse的时候经常会出现鼠标只能移动,不能点击的问题,左右键和滚轮都不能窗口上使用,但是却可以点击顶部的bar。很奇怪的问题,一直没办法解决,只能将就着用快捷键,实在忍不了就重启系统。今天google了下,发现一个比较便捷的方法,虽然不能本质上解决这个问题,但是还是可以将就。 Got this one too. The odd thing is, it d

louyong0571的专栏 2万+

Qt 自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等效果实现

本次实验内容为Qt自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等界面软件的基本常规操作。我们在做一个软件界面的时候,有时需要其任务栏显示一些文本、图片甚至一些自定义控件的内容,但是通过Qt自动创建的窗口类仅自带系统风格的标题栏,往往并不能满足我们的自定义设计需求。在这种情况下,需要用Qt设计自定义标题栏内的相关内容。本篇博客记录本人实现这一功能的前后代码过程,并不一定是标准方式,仅作一个记录,在后面项目用的时候进行查阅。......

wang_chao118的博客 1万+

windows应用开发由浅入深(三)有关鼠标事件--设置鼠标点击测试值实现非标题栏拖动窗口

相关消息:WM_NCHITTEST MSDN描述:The WM_NCHITTEST message is sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is not captured, the message is sent to the wi

Jimmy的小黑屋 1338

在Ubuntu中无需单击标题栏即可移动窗口

Ubuntu has a cool feature that lets you click and drag a window by clicking anywhere in the window as long as you are holding down either the Control, Alt, or “Win” key while you are dragging. Ubuntu具...

cum44153的博客 1130

MFC:拖动无标题窗口的两种方法

有的时候,我们需要自绘窗口的标题,或者隐藏了窗口标题,那么问题来了,这就是怎么拖动无标题的窗口? 这个问题的本质便是怎么在窗口客户上,拖动鼠标,并且移动窗口。 通常状态下,一个窗口只有在标题栏域,才会响应鼠标拖动的消息。而在窗口客户并不会响应。 这样便有了一个方法,就是我们可以欺骗windows,让它误认为鼠标点击窗口客户时是点击在了标题栏上。 有这么个消息,就是WM_NCH

aafengyuan的专栏 4198

vc禁止标题栏拖动窗口

思路:拖动窗口首先要左键单击,那么我就屏蔽掉标题栏上的左键单击: 处理非客户单击消息WM_NCLBUTTONDOWN,使用类向导添加该消息的响应函数 OnNcLButtonDown(UINT   nHitTest,   CPoint   point) 代码如下 void CTestThreadDlg::OnNcLButtonDown(UINT nHitTest, CPoint

Barry的博客 2838

WPF拖动窗体栏移动

// 支持标题栏拖动 protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); // 获取鼠标相对标题栏位置 Point position = e.GetPosition(gridTitleBar);

l09302的专栏 3323

C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置

方法一 1.定义一个位置信息Point用于存储鼠标位置 private Point mPoint; 2.给窗体等控件增加MouseDown和MouseMove事件 private void panel1_MouseDown(object sender, MouseEventArgs e) { mPoint = new Point(e.X, e.Y); } private void pa...

韬光养晦 373

Python: 实现鼠标点击tkinter窗口任意位置拖动

实现鼠标点击tkinter窗口任意位置进行拖动

ningqingzy的博客 3803

通过在客户拖动鼠标来移动窗口引发的一些问题

最近在研究罗云彬的win32汇编(个人觉得是本好书),GDI一章,BMP时钟,发现这样一个问题:摘录原文如下: void Cls_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)//左键按下消息响应函数 { //省略无关代码...... PostMessage(hwnd,WM_NCLBU

u010262413的专栏 1356

qt单击按钮打开新窗口_通过单击窗口中的任意位置移动表单

qt单击按钮打开新窗口 Normally a window is moved by clicking on the caption bar and dragging. You may want your user to be able to move borderless forms or move a form by clicking anywhere ...

cunchi8090的博客 791

MFC 客户 模拟标题栏 功能 ,实现窗体拖动

移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,就需要用鼠标单击窗口标题条以外域来移动窗口。有两种方法可以达到这一目标。   方法一:     当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处理该消息,使得只要鼠标窗口内,Windows便认为鼠标在标题条上。这需要重载CWnd类处理WM_NCHITTEST消息的OnN

记录我的技术成长轨迹 2289

html5鼠标点击弹出层,jQuery实现单击弹出Div层窗口效果(可关闭可拖动)

本文实例讲述了jQuery实现单击弹出Div层窗口效果。分享给大家供大家参考。具体如下:这是一款jquery实现的可拖动可关闭的弹出框效果,网上已经有很多类似效果了,网页上实现这种效果其实并不难,现在又有了jquery让我们用,更方便了,本代码演示了在CSS代码、JavaScript代码和HTML三者结合的情况下,如何实现一个可关闭的弹出窗口鼠标点击关闭按钮后将其关闭,然后会显示打开按钮,单击这...

weixin_29166013的博客 1342

拖动无标题窗口的方法

有的时候,我们需要自绘窗口的标题,或者隐藏了窗口标题,那么问题来了,这就是怎么拖动无标题的窗口? 这个问题的本质便是怎么在窗口客户上,拖动鼠标,并且移动窗口。 通常状态下,一个窗口只有在标题栏域,才会响应鼠标拖动的消息。而在窗口客户并不会响应。 这样便有了一个方法,就是我们可以欺骗windows,让它误认为鼠标点击窗口客户时是点击在了标题栏上。 有这么个消息,就是WM_NCH

jiangqin115的专栏 2080
上一篇: VC控件——CToolTipCtrl的用法
下一篇: VC控件——CTreeCtrl中HitTest的用法
primer_programer
博客等级 码龄20年 283粉丝 180原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值