Aero Glass bordea las ventanas emergentes en C#
Pregunta
Me gustaría crear ventanas emergentes (de tamaño fijo) como esta:
en mi aplicación usando C#.He investigado NativeWindow pero no estoy seguro de si esta es la forma correcta de hacerlo.Quiero que una ventana se comporte exactamente como el control de volumen o la ventana "conectarse a" en Windows 7.
¿Cómo puedo lograr esto?
Solución
yo era capaz de lograr esto:
if (m.Msg == 0x84 /* WM_NCHITTEST */) {
m.Result = (IntPtr)1;
return;
}
base.WndProc(ref m);
Otros consejos
Uso WinForms, crear un formulario y establecer el siguiente:
Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;
Editar
Esto requiere la ventana sea considerable, pero se puede hacer trampa en que un poco. Ajuste el MinimumSize y MaximumSize al tamaño deseado. Esto evitará que el usuario pueda cambiar el tamaño.
Como sugirió Jeff, también se puede hacer esto en CreateParams:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
unchecked
{
cp.Style |= (int)0x80000000; // WS_POPUP
cp.Style |= 0x40000; // WS_THICKFRAME
}
return cp;
}
}
En ambos casos, sin embargo, usted todavía obtener un cursor de tamaño cuando se pasa sobre los bordes. No estoy seguro de cómo evitar que esto ocurra.
En sus CreateParams especificar WS_POPUP y WS_THICKFRAME.
Para evitar que los cursores de tamaño se muevan sobre los bordes WM_NCHITTEST
y cuando cruce las fronteras regrese HTBORDER
.