双击时禁用最大化

时间:2015-03-03 13:03:21

标签: c# user-interface

所以我在c#中创建了一个gui,我将边框设置为None(对于平面样式的外观) 并且我注意到,双击gui的任何地方都会使整个屏幕上的gui最大化,即使我在选项中禁用了它。

http://i.stack.imgur.com/FIjxa.png

我尝试更改选项并添加双击功能

    private void Form1_DoubleClick(object sender, EventArgs e)
    {
        MessageBox.Show("no", "test");

    }
当双击gui时,这不会消失......我不知道该怎么做。

任何人的想法? 完整代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ScrapEX
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void Form1_Load(object sender, EventArgs e)
    {
        MessageBox.Show("no", "test");
    }


    private void Form1_DoubleClick(object sender, EventArgs e)
    {
        MessageBox.Show("no", "test");

    }

    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case 0x84:
                base.WndProc(ref m);
                if ((int)m.Result == 0x1)
                    m.Result = (IntPtr)0x2;
                return;
        }

        base.WndProc(ref m);

    }



}

}

现在我可以看到我用来使窗口可以调整大小的东西,我可以这么做,所以只有一小块区域可以作为标题栏吗?像右上角的三角形还是什么?抱歉混合问题,但这是相关的

1 个答案:

答案 0 :(得分:1)

作为@Sinatr indicates,您的WndProc通过设置WM_NCHITTEST2来回复每个HTCAPTION查询,从而有效地将整个表单作为标题酒吧。

这样可以双击(取消)最大化您的表单。

另见MSDN: WM_NCHITTEST message

至于你的编辑,你似乎想要制作一个自定义标题栏。请参阅Win api in C#. Get Hi and low word from IntPtr获取带有X和Y坐标的Point,这样您就可以确定何时设置1(HTCLIENT)或2(HTCAPTION)。