Pregunta

Me gustaría crear ventanas emergentes (de tamaño fijo) como esta:

pop-up windows

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top