如何阻止Windows窗体中重写的WndProc函数中的双击? [英] How to block double click in overridden WndProc function in Windows Forms?

查看:49
本文介绍了如何阻止Windows窗体中重写的WndProc函数中的双击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在Windows窗体中创建的窗体,无论单击何处都可以将其拖动.我是通过重写WndProc函数来实现的,该函数依次修改每次单击,因为它是标题栏单击:

I have a form created in Windows Forms which is draggable wherever I click. I made it by overriding WndProc function which in turn modifies each click as it was a title bar click:

    //found at: http://stackoverflow.com/questions/3995009/how-to-make-a-window-draggablec-winforms
    private const int WM_NCHITTEST = 0x84;
    private const int HTCLIENT = 0x1;
    private const int HTCAPTION = 0x2;

    ///
    /// Handling the window messages 
    ///
    protected override void WndProc(ref Message message)
    {
        base.WndProc(ref message);

        if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
            message.Result = (IntPtr)HTCAPTION;
    }

问题是,当我双击时,窗口变为全屏显示,这是不需要的.如何阻止这种行为?

The problem is that now when I double click, the window becomes fullscreen, which is unwanted. How can I block this behavior?

推荐答案

除了JaredPar,我建议不要以那样方式创建可拖动表单,而是分3个步骤处理

In addition to JaredPar I would suggest don not create draggable form in that way, but handle it in 3 steps

  • 在表格上找到鼠标
  • 捕获鼠标
  • 识别鼠标向上事件

处理起来并不复杂,最好是imo,然后禁用该表单的双击.

It is not a complicated to handle, and it's better, imo, then disabling a double click on the form.

有关如何操作的完整示例,请查看

For complete example of how you can do that can have a look on

创建可拖动的无边界表单

这篇关于如何阻止Windows窗体中重写的WndProc函数中的双击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆