Вопрос

Я хотел бы создать всплывающие окна (фиксированного размера) следующим образом:

pop-up windows

в моем приложении, использующем 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top