Aero Glass граничит со всплывающими окнами в C#
Вопрос
Я хотел бы создать всплывающие окна (фиксированного размера) следующим образом:
в моем приложении, использующем C#.Я просмотрел NativeWindow, но не уверен, что это правильный способ сделать это.Я хочу, чтобы окно вело себя точно так же, как окно регулировки громкости или «подключения к» в Windows 7.
Как я могу это сделать?
Решение
Мне удалось это сделать:
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;
Редактировать:
Для этого требуется, чтобы окно было значительным, но вы можете немного схитрить.Установите минимальный размер и максимальный размер на желаемый размер.Это не позволит пользователю изменить размер.
Как предложил Джефф, вы также можете сделать это в CreateParams:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
unchecked
{
cp.Style |= (int)0x80000000; // WS_POPUP
cp.Style |= 0x40000; // WS_THICKFRAME
}
return cp;
}
}
Однако в обоих случаях вы все равно увидите курсор изменения размера, когда наведете курсор на края.Я не знаю, как этого не допустить.
В CreateParams укажите WS_POPUP и WS_THICKFRAME.
Чтобы предотвратить перемещение курсоров размера над дескриптором границ WM_NCHITTEST
и когда через границы вернутся HTBORDER
.