Pergunta

Eu gostaria de criar janelas pop-up (de um tamanho fixo) como este:

janelas pop-up

no meu aplicativo usando C #. Eu olhei para NativeWindow mas eu não tenho certeza se este é o caminho certo para fazê-lo. Eu quero uma janela para se comportam exatamente como o controle de volume ou "conectar-se" janela no Windows 7.

Como posso fazer isso?

Foi útil?

Solução

Eu era capaz de fazer isso:

if (m.Msg == 0x84 /* WM_NCHITTEST */) {
    m.Result = (IntPtr)1;
    return;
}
base.WndProc(ref m);

Outras dicas

Usando WinForms, criar um formulário e defina o seguinte:

Text = "";
FormBorderStyle = Sizable;
ControlBox = false;
MaximizeBox = false;
MinimizeBox = false;
ShowIcon = false;

Editar:

Isto requer a janela ser considerável, mas você pode enganar em que um pouco. Definir a MinimumSize e MaximumSize para o tamanho desejado. Isso impedirá que o usuário de redimensionamento.

Como Jeff sugeriu, você também pode fazer isso em CreateParams:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        unchecked
        {
            cp.Style |= (int)0x80000000;    // WS_POPUP
            cp.Style |= 0x40000;            // WS_THICKFRAME
        }
        return cp;
    }
}

Em ambos os casos, no entanto, você ainda obter um cursor de dimensionamento quando você passa o mouse sobre as bordas. Eu não tenho certeza de como impedir que isso aconteça.

Em seus CreateParams especificar WS_POPUP e WS_THICKFRAME.

Para evitar que os cursores de dimensionamento sobre a WM_NCHITTEST fronteiras alça e quando as fronteiras HTBORDER retornar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top