Удалить стандартную оконную рамку в C++ Win32


person Victor    schedule 23.01.2013    source источник
comment
Ничто в вашем коде на самом деле не меняет кадр, он просто говорит алгоритму позиционирования, что он сделал, и пересчитывает некоторые значения. Вам нужно изменить фактические стили окна, чтобы изменить стиль окна.   -  person Deanna    schedule 24.01.2013
comment
Я видел этот фрагмент в MSDN...   -  person Victor    schedule 24.01.2013
comment
Но действительно ли вы сделали все остальное, что говорит образец? Как говорится в комментарии, вставленный вами код просто сообщает окну, что вы изменили фрейм, но на самом деле ничего не меняет.   -  person Deanna    schedule 24.01.2013
comment
Я сделал все выше этого фрагмента на этой странице. Пожалуйста, смотрите ссылку; то вы увидите, что там как раз этот код и под ним скриншот с измененной рамкой.   -  person Victor    schedule 25.01.2013
comment
Пожалуйста, покажите свой код, который также меняет стиль окна, так как явно чего-то не хватает.   -  person Deanna    schedule 28.01.2013
comment
@Victor - Если вы не решили эту проблему и вам все еще интересно, вы можете увидеть более полный пример в вопросе, на который я ответил ранее сегодня, здесь: stackoverflow.com/questions/31093494/   -  person enhzflep    schedule 28.06.2015


Ответы (2)


Я думаю, вы можете сделать это, передав WS_OVERLAPPED (не WS_OVERLAPPEDWINDOW) в качестве параметра dwStyle для CreateWindowEx при создании окна.

person user1610015    schedule 23.01.2013

Это действительно просто, просто зайдите в свою оконную процедуру, затем сообщение WM_NCCALCSIZE и верните 0, когда WPARAM имеет значение TRUE.

// Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch (msg)
    {
    case WM_NCCALCSIZE:
        if (wparam == TRUE) return 0;
        break;
    }
    ...
}

В качестве пояснения код, который вы показали, служит для принудительного использования предыдущего кода.

person surreal Ceres    schedule 25.07.2020