我想为WPF启用SnapLayout
,因为我使用自定义窗口,根据documentation,我必须自己做。
对于Win32应用程序,请确保您对WM_NCHITTEST进行了适当的响应(最大化/恢复按钮的返回值为HTMAXBUTTON)。
我使用了以下代码
private const int HTMAXBUTTON = 9;
private IntPtr HwndSourceHook(IntPtr hwnd, int msg, IntPtr wparam,
IntPtr lparam, ref bool handled)
{
switch (msg)
{
case InteropValues.WM_NCHITTEST:
try
{
int x = lparam.ToInt32() & 0xffff;
int y = lparam.ToInt32() >> 16;
var rect = new Rect(_ButtonMax.PointToScreen(
new Point()),
new Size(_ButtonMax.Width, _ButtonMax.Height));
if (rect.Contains(new Point(x, y)))
{
handled = true;
}
return new IntPtr(HTMAXBUTTON);
}
catch (OverflowException)
{
handled = true;
}
break;
}
return IntPtr.Zero;
}
字符串SnapLayout
显示得很好,但是最大化按钮不起作用,如果我点击它,它旁边会创建一个按钮。我如何解决这个问题?
x1c 0d1x的数据
1条答案
按热度按时间nzrxty8p1#
更新:这是完整的代码,工作正常(没有任何问题(鼠标悬停,点击,.))
字符串
您需要定义ButtonHoverBackground和ButtonHoverBackground或替换为SolidColorBrush。