WinApi - изменить стиль окна - PullRequest
       3

WinApi - изменить стиль окна

3 голосов
/ 11 февраля 2011

Я хочу изменить свой стиль windo во время выполнения. Я использую этот код

if (this->fullscreen)
{
    this->style = WS_POPUP|WS_VISIBLE;
}
else 
{
    this->style = WS_OVERLAPPED|WS_SYSMENU|WS_VISIBLE;
}

    SetWindowLongPtr(this->mainWindowHandle, GWL_STYLE, this->style);

        SetWindowPos(this->mainWindowHandle, 
                HWND_TOP, 
                0, 
                0,
                0,    //New Width
                0, //New Height, 
            SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);

Но это не имеет никакого эффекта ... и окно все еще без рамки (WS_POPUP) ...

Ответы [ 4 ]

2 голосов
/ 11 февраля 2011

Согласно MSDN , вы не можете изменять эти конкретные стили после создания окна. Если вы все равно попытаетесь, это также говорит о том, что WS_SYSMENU требует WS_CAPTION.

1 голос
/ 11 февраля 2011

Попробуйте позвонить SetWindowPos с флагом SWP_DRAWFRAME и посмотрите, поможет ли это.

0 голосов
/ 18 апреля 2018

Вы можете сохранить текущую позицию и размер из фактического окна. Затем уничтожьте его и создайте новое окно с новым стилем, предыдущим положением и размером.

0 голосов
/ 11 февраля 2011

Возможно, вам потребуется использовать CWnd :: ModifyStyle .Взгляните на пример здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...