所以我只是使用 DwmExtendFrameIntoClientArea(Vista / 7 Aero 的东西)将表单的玻璃区域扩展到客户区域。
我已经在覆盖 Form 类方法 OnMouseDown() 中发送了一条 Windows 消息,导致窗口可以随玻璃区域移动,如此处所述使无边框表单可移动?.
但是,正因为如此,当单击展开的玻璃区域时,我没有收到任何表单 Click / MouseClick / DoubleClick 等事件。
当我双击顶部展开的玻璃区域时,我实际上希望表单最大化,就像普通的标题栏一样。
这是表单继承类的代码:
protected override void OnMouseDown(MouseEventArgs e)
{
// Fensterverschiebung in Glass-Regionen
if (_glassMovable && e.Button == MouseButtons.Left
&& (e.X < _glassPadding.Left || e.X > Width - _glassPadding.Right
|| e.Y < _glassPadding.Top || e.Y > Height - _glassPadding.Bottom))
{
NativeMethods.ReleaseCapture();
NativeMethods.SendMessage(Handle, NativeMethods.WM_NCLBUTTONDOWN,
NativeMethods.HT_CAPTION, 0);
}
base.OnMouseDown(e);
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
// Fenstermaximierung / Minimierung in Glass-Regionen
if (MaximizeBox && e.Button == MouseButtons.Left && e.Y < _glassPadding.Top)
{
if (WindowState == FormWindowState.Normal)
{
WindowState = FormWindowState.Maximized;
}
else if (WindowState == FormWindowState.Maximized)
{
WindowState = FormWindowState.Normal;
}
}
base.OnMouseDoubleClick(e);
}
有什么办法可以让它工作吗?