如何防止控件改变Z顺序?

2023-12-26

我在 .Net 中有用户控件,我在 WndProc 中使用命中测试,以允许在运行时使用鼠标调整其大小。

问题是,命中测试成功后(按下鼠标、拖动以调整大小、释放鼠标),控件会按 Z 顺序向上跳跃并破坏其在窗体中的位置。

我需要命中测试,因为它是一个非常定制的控件。

WndProc 中有没有办法阻止控件更改其 Z 顺序?

Thanks.

命中测试代码:

protected override void WndProc(ref Message m) {
  if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) {
    Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16);
    Hit = this.PointToClient(Hit);
    int DistToBorder = 5;
    if (Hit.X < DistToBorder) {
      if (Hit.Y < DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT;
        return;
      }
      if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTBOTTOMLEFT;
        return;
      }
      m.Result = (IntPtr)Win32Wrapper.HTLEFT;
      return;
    }
    else if (Hit.X > ClientRectangle.Right - DistToBorder) {
      if (Hit.Y < DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTTOPRIGHT;
        return;
      }
      else if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
        m.Result = (IntPtr)Win32Wrapper.HTBOTTOMRIGHT;
        return;
      }
      m.Result = (IntPtr)Win32Wrapper.HTRIGHT;
      return;
    }
    else if (Hit.Y < DistToBorder) {
      m.Result = (IntPtr)Win32Wrapper.HTTOP;
      return;
    }
    else if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
      m.Result = (IntPtr)Win32Wrapper.HTBOTTOM;
      return;
    }
  }

为了防止 Z 顺序改变你应该抓住WM_WINDOWPOSCHANGING消息并设置SWP_NOZORDER flag.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止控件改变Z顺序? 的相关文章

  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • C# 中一次性对象克隆会导致内存泄漏吗?

    检查这个代码 class someclass IDisposable private Bitmap imageObject public void ImageCrop int X int Y int W int H imageObject
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • 为什么某些安装程序需要在运行程序之前重新启动计算机?

    我对部署桌面应用程序相当陌生 所以这是我第一次为我的软件构建安装程序 目前 我安装软件后第一次运行它时 它崩溃了 之后 它运行良好 我仍在调试此问题 但我注意到在安装后和运行软件之前立即重新启动似乎可以修复此崩溃 某些安装程序要求您在运行软
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 调整屏幕和字体设置的 WPF 应用程序(或者,我如何将 DLU 与 WPF 中的单元相关联?)

    在MFC中 对话框的设计使用DLUs http msdn microsoft com en us library bb847924 aspx 在 WPF 中 我们以 1 96 英寸为单位指定 虽然这确实会缩放窗口和视觉元素 但我们如何使 W
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • 如何使用 org.springframework.orm.hibernate4.LocalSessionFactoryBean 在 Hibernate 中注册自定义类型

    我正在从 hibernate 3 迁移到 hibernate 4 在 hibernate 3 中 我注册自定义类型的方式是 public class AnnotationSessionFactoryBean extends org spri
  • Bootstrap 3 水平和垂直分隔线

    我无法在我的网站上添加水平线和垂直线 不知道这有什么问题 我尝试使用边框 但我不确定我做得是否正确 我想实现一个十字形分隔线 如下图所示 我的代码如下所示 div class container liquid style margin 0p
  • CSS 调整图像背景的亮度而不是内容的亮度

    该部分有一个背景图像 内容位于顶部 我想仅降低该部分中背景图像的亮度 而不降低内容的亮度 我已经尝试过以下操作 但是 亮度仍然适用于所有内容而不仅仅是图像 div div h1 class heading headline text h1
  • C++:从命令行读取文件名并在我的文件中使用它

    如何从命令行读取文件名并在我的 C 代码文件中使用它 ex cppfile inputFilename outputFilename 任何帮助是极大的赞赏 int main int argc char argv string inFile
  • 将 json 数组反序列化为列表并保留列表中 json 的数组顺序

    我有以下 json 它使用 Jackson 映射器映射到 POJO 如何在反序列化期间保留 json 数组列的顺序 我应该使用什么注释 JSON columnNames FirstName LastName UserName values
  • Babel polyfill 与 webpack

    我需要包括吗import babel polyfill 到每个条目文件的顶部 或者是否足够babel polyfill规则只在 webpack config 文件中 我对 polyfill 文档感到困惑 并且仍然收到以下错误 only on
  • Oracle 中的存储过程给出错误 PLS-00428

    我正在尝试在 oracle 中创建以下过程 CREATE OR REPLACE PROCEDURE SPBILL SPCLIENT ID VARCHAR2 AS BEGIN SELECT C CLIENT NAME B ROOM ID R
  • 安装 vmware 工具:无法识别 3.8.0-19-generic 内核文件的路径 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 所以我正在使用 Lubuntu 并使用 vmplayer 作为虚拟机运行 并且我正在尝试安装 vmware 工具 做完之后 vmware
  • CodeIgniter URI 中不允许使用句点?

    所以读完之后这个问题 https stackoverflow com questions 389169 best practices for api versioning关于 API 版本控制 我决定为所有路由添加版本号前缀 http lo
  • XSLT 分割输出文件 - muenchian 分组

    我有一个 XSLT 文件 以便转换大量数据 我想添加一个 拆分 功能 无论是作为链接的 XSLT 还是在当前的 XSLT 中 它可以创建多个输出文件 以便将文件的大小限制在某个阈值以下 假设输入 XML 如下
  • Admob 用户消息平台的强制同意

    我从已弃用的 GDPR 同意库切换到新的用户消息传递平台 并使用了中所述的代码文档 https developers google com admob ump android quick start 我注意到当用户点击管理选项 then 确
  • 如何清除 SFSafariViewController 凭据?

    我在 Swift 2 中使用 SFSafariViewController 在带有 ios 9 1 13B143 的 iPad Air 2 上显示网页 每个网页都需要用户的凭据 但是 当用户按下注销按钮时 我需要清除这些凭据 我尝试过使用以
  • ruby on Rails 中的 url 编码等效项

    Ruby on Rails 2 3 5 中是否有与 PHP 的 urlencode 等效的代码 它对要在 URL 的查询部分中使用的字符串进行编码 我用谷歌搜索了它 但所有答案似乎都可以追溯到 2006 年之前 而且似乎有日期 这就是我发现
  • 在 Mac 上安装适用于 Python 的 Gtk 3

    我已经使用 homebrew 安装了 python gtk3 但它打印 警告 gtk 3 3 14 6 已安装 但是当我尝试在 python 中导入它时 from gi repository import Gtk 它给出了错误 导入错误 没
  • WebView 文本大小

    有时 当我加载页面 没有静态内容 动态构建 时 我看到字体太小1 http s8 postimage org 7akrcd8wl webview1 png 如果我重新加载 我会正确看到它2 http s7 postimage org cp6
  • 如何按照我们设置的顺序从本地存储中检索数据

    我正在通过循环遍历顶部菜单 对象数组 来读取 json 文件并将项目取出并将其存储到本地存储中 一切正常 甚至数据也存储在本地存储中 但我的问题是它按排序顺序将数据存储在 localStorage 中 这可能是其默认行为 但我不需要按排序顺
  • Python 访问字典列表中的字典

    您好 我有下面的字典 它有一个带有列表的值 列表内有一个字典 有没有办法使用键而不是列表索引来调用列表内的字典值 列表内的字典可能会有所不同 因此索引值可能并不总是提供正确的键值对 但如果我能够使用密钥 我总能获得正确的值 mylist m
  • 请求的资源上不存在“Access-Control-Allow-Origin”标头。与 github 站点

    http kingdiepie github io testing html http kingdiepie github io testing html XMLHttpRequest 无法加载https docs google com s
  • 在 PostgreSQL 和 Ruby on Rails 中使用间隔

    我想从 Rails 应用程序将持续时间 2 天 5 年 保存为 PostgreSQL 中的间隔 uration min 和uration max 都是 2 天 或 5 年 之类的值 因此它们各自都是一个间隔 def change creat
  • 如何防止控件改变Z顺序?

    我在 Net 中有用户控件 我在 WndProc 中使用命中测试 以允许在运行时使用鼠标调整其大小 问题是 命中测试成功后 按下鼠标 拖动以调整大小 释放鼠标 控件会按 Z 顺序向上跳跃并破坏其在窗体中的位置 我需要命中测试 因为它是一个非