所以我在c#中创建了一个gui,我将边框设置为None(对于平面样式的外观) 并且我注意到,双击gui的任何地方都会使整个屏幕上的gui最大化,即使我在选项中禁用了它。
我尝试更改选项并添加双击功能
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);
}
}
}
现在我可以看到我用来使窗口可以调整大小的东西,我可以这么做,所以只有一小块区域可以作为标题栏吗?像右上角的三角形还是什么?抱歉混合问题,但这是相关的
答案 0 :(得分:1)
作为@Sinatr indicates,您的WndProc
通过设置WM_NCHITTEST
或2
来回复每个HTCAPTION
查询,从而有效地将整个表单作为标题酒吧。
这样可以双击(取消)最大化您的表单。
至于你的编辑,你似乎想要制作一个自定义标题栏。请参阅Win api in C#. Get Hi and low word from IntPtr获取带有X和Y坐标的Point
,这样您就可以确定何时设置1(HTCLIENT
)或2(HTCAPTION
)。