@User700

Как настроить перерисовку окна диалога при его деактивации [MFC C++]?

Создаю приложение на основе диалогового окна.

При передачи фокуса другому окну, другому приложению не происходит перерисовка фрейма (окна) диалога более бледным цветом; но если активным окном "затереть" часть фрейма диалога (или весь), то на обновлённых областях граница окна становится бледного цвета (как и положено для неактивного окна).

Как сделать так, чтобы оно сразу становилось выглядеть как неактивное окно при потере фокуса?
Такое поведение наблюдается у диалоговых окон даже при создании любого приложения мастером MFC по умолчанию, но у окон документа (при выборе соответствующего варианта типа приложения) такого нет.

Может быть что-то добавить в обработчик сообщения ON_WM_NCACTIVATE? Ни UpdateWindow, ни Invalidate не помогают.
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
SerJook
@SerJook
кодер
Попробуйте переопределить ON_WM_NCACTIVATE и ON_WM_ACTIVATE:

void CMFCApplication1Dlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) {
    Default();
}

BOOL CMFCApplication1Dlg::OnNcActivate(BOOL active)
{
    if (m_nFlags & WF_STAYACTIVE)
        active = TRUE;
    return(BOOL)DefWindowProc(WM_NCACTIVATE, active, 0L);
}


Взято отсюда: https://stackoverflow.com/questions/53768653/mfcs-...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы