Измените стиль, чтобы он стал серым, кнопка «развернуть» приводит к исчезновению кнопки

#c #mfc #maximize-window

Вопрос:

У меня есть небольшое приложение, в котором вы можете установить, активна ли кнопка «Развернуть» или «свернуть» или нет/выделена серым цветом.

 if (!m_bActiveMaximizeButton)  // Maximieren
{
    this->ModifyStyle(WS_CAPTION|WS_MAXIMIZEBOX,0,0);
    this->ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);       
} else
{
    this->ModifyStyle(WS_CAPTION,0,0);
    this->ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);
}
if (!m_bActiveMinimizeButton)   // Minimieren
{
    this->ModifyStyle(WS_CAPTION|WS_MINIMIZEBOX,0,0);
    this->ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);
} else
{
    this->ModifyStyle(WS_CAPTION,0,0);
    this->ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);
}
    CMenu* menue = this->GetSystemMenu(FALSE);

if (!m_bActiveCloseButton)  // Schließen X
{
    menue->ModifyMenu(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
} else
{
    menue->ModifyMenu(SC_CLOSE, static_cast<UINT>(MF_BYCOMMAND | ~MF_GRAYED));
}
 

Это прекрасно работает со стилями Windows 7. Однако в стилях Windows 10 кнопки не становятся серыми, а полностью исчезают. Отключение кнопки «Закрыть» больше не работает вообще.

Что мне нужно изменить, чтобы снова сделать кнопки серыми?

Комментарии:

1. В чем практическая разница между отображением кнопки, с которой пользователь не может взаимодействовать, и не отображением указанной кнопки?

2. во-первых, пользователю более ясно видно, что минимизация/максимизация или закрытие отключены. Во-вторых: в некоторых случаях после перезагрузки вы все еще можете нажать деактивированную или теперь невидимую кнопку «Развернуть». Если вы нажмете рядом с кнопкой закрыть, окно по-прежнему будет развернуто, хотя оно и не отображается.

3. Это просто заново объяснило эффект. Но каковы практические последствия для пользователя? Они не могут выполнить определенную операцию над окном, так зачем отображать виджет, который, по сути, просто говорит: «Эй, посмотри на меня, ты буквально ничего не можешь со мной сделать! Просто сообщаю вам». Я имею в виду, что если это свойство важно для пользователя, он знает , как открыть системное меню и посмотреть.

4. «в некоторых случаях после перезагрузки вы все еще можете нажать деактивированную или теперь невидимую кнопку» Развернуть «» — это ошибка в вашем коде, которую вам необходимо исправить.

5. Конечно, это все еще можно использовать без практических последствий. Но пользователь хотел бы, чтобы все было так, как было раньше, поэтому я ищу решение. ошибка: да, я знаю, но ошибка возникает с тех пор, как изменился внешний вид, ошибка не существует, при этом кнопки становятся серыми. Поэтому я сначала ищу решение, которое хочет иметь пользователь. Есть ли способ все еще скрыть это или это больше недоступно?