Aero Glass граничит с всплывающими окнами в C#
Я хотел бы создать всплывающие окна (фиксированного размера) следующим образом:
в моем приложении с использованием C#. Я посмотрел в NativeWindow, но я не уверен, что это правильный способ сделать это. Я хочу, чтобы окно вела себя точно так же, как регулятор громкости или окно "подключения к" в Windows 7.
Как я могу сделать это?
4 ответа
Я смог сделать это:
if (m.Msg == 0x84 /* WM_NCHITTEST */) {
m.Result = (IntPtr)1;
return;
}
base.WndProc(ref m);
Используя WinForms, создайте форму и установите следующее:
Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;
Редактировать:
Это требует, чтобы окно было значительным, но вы можете немного обмануть. Установите MinimumSize и MaximumSize на желаемый размер. Это предотвратит изменение размера пользователем.
Как предложил Джефф, вы также можете сделать это в CreateParams:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
unchecked
{
cp.Style |= (int)0x80000000; // WS_POPUP
cp.Style |= 0x40000; // WS_THICKFRAME
}
return cp;
}
}
В обоих случаях, однако, вы все равно получите размерный курсор при наведении курсора на края. Я не уверен, как предотвратить это.
Для предотвращения проклейки курсоров над границами WM_NCHITTEST
и когда через границы возвращаются HTBORDER
,