#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. Конечно, это все еще можно использовать без практических последствий. Но пользователь хотел бы, чтобы все было так, как было раньше, поэтому я ищу решение. ошибка: да, я знаю, но ошибка возникает с тех пор, как изменился внешний вид, ошибка не существует, при этом кнопки становятся серыми. Поэтому я сначала ищу решение, которое хочет иметь пользователь. Есть ли способ все еще скрыть это или это больше недоступно?