Как поддержать макет привязки в WinForms на C# для Windows 11C#

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

Сообщение Anonymous »

Как поддерживать привязку макета в WinForms для Windows 11. Я использую C# 10.
Изображение

Настраиваемая кнопка развертывания моего приложения показывает только всплывающую подсказку.
Код WndProc MainForm:

Код: Выделить всё

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
if (WindowState == FormWindowState.Normal && m.Result == (IntPtr)HitTestValues.HTCLIENT)
m.Result = (IntPtr)(PointToClient(new(m.LParam.ToInt32())) switch
{
var v when v.Y  HitTestValues.HTBOTTOMRIGHT,
});
return;
case WM_NCCALCSIZE:
return;
case WM_SYSCOMMAND:
(formSize, Size) = (m.WParam.ToInt32() & 0xFFF0) switch
{
SC_MINIMIZE => (ClientSize, Size),
SC_RESTORE  => (formSize, formSize),
_           => (formSize, Size),
};
(m.WParam.ToInt32() switch
{
MY_FULLSCREENMENU     => fullScreenToolStripMenuItem_Click,
MY_COMPACTOVERLAYMENU => compactToolStripMenuItem_Click,
_                     => (Action)((s, e) => {})
})(null, null);
break;
}
base.WndProc(ref m);
Console.WriteLine(m.ToString());
}
Постоянное целое число:

Код: Выделить всё

private const int WM_NCCALCSIZE = 0x0083;
private const int WM_SYSCOMMAND = 0x0112;
private const int WM_POPUPSYSTEMMENU = 0x313;
private const int WM_MOUSEMOVE = 0x0200;
private const int WM_NCHITTEST = 0x0084;
private const int WS_SYSMENU = 0x80000;
private const int WS_MINIMIZEBOX = 0x20000;
private const int WS_MAXIMIZEBOX = 0x10000;
private const int SC_MINIMIZE = 0xF020;
private const int SC_RESTORE = 0xF120;
private const int resizeAreaSize = 10;
public const int MY_FULLSCREENMENU = 1020202020;
public const int MY_COMPACTOVERLAYMENU = 1001303000;
public const int MF_BYPOSITION = 0x400;
public const int MF_SEPARATOR = 0x800;
И перечисление HitTestValue из C# находится по этой ссылке.
Я хочу поддержать макет привязки для моей кнопки развертывания. Имя переменной кнопки max — maxbtn.
Я не нашел макета привязки для WinForms. Это дает мне результаты только для UWP (универсальная платформа Windows) и WPF (Windows Presentation Foundation).

Подробнее здесь: https://stackoverflow.com/questions/712 ... windows-11
Ответить

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

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

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

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

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