Поддержка макета Snap Windows 11 в приложении WPFC#

Место общения программистов C#
Ответить
Anonymous
 Поддержка макета Snap Windows 11 в приложении WPF

Сообщение Anonymous »

Я хочу включить SnapLayout для WPF, поскольку я использую Customized Window, согласно документации, мне придется сделать это самому.

Для приложений 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
отображается хорошо. Но кнопка «Развернуть» не работает, и если я нажму на нее, рядом с ней будет создана кнопка. Как я могу решить эту проблему?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/697 ... in-wpf-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»