CPropertySheet и CPropertyPages отображаются белым цветом - PullRequest
0 голосов
/ 27 апреля 2010

Я создал простой список свойств (CPropertySheet) и несколько производных классов CPropertyPage.

Во время работы приложения ProperySheet, страница и вкладки отображаются белым цветом.

Я ожидал, что они будут похожи на обычный цвет диалогов вдовы.

Появляется ли какая-нибудь подсказка, чтобы лист свойств, фон страниц были похожи на другие обычные диалоги MFC?

Я использую Visual Studio 2008 MFC без .NET CLR.

Ответы [ 3 ]

1 голос
/ 27 апреля 2010

Что вы имеете в виду «системный цвет»? Серый (COLOR_BTNFACE)? На какой ОС вы работаете? Если XP, лист свойств должен быть в COLOR_BTNFACE, Vista / Win7, я не знаю, какой правильный цвет. Если вы не сделаете ничего особенного, они будут отображаться в системных цветах по умолчанию.

0 голосов
/ 17 февраля 2015

Обработка сообщения WM_CTLCOLORDLG.

case WM_CTLCOLORDLG:
   {
      HDC hdc = (HDC)wParam;
      COLORREF color = GetSysColor(COLOR_3DFACE);
      SetBkColor(hdc, color);
      static HBRUSH brush = CreateSolidBrush(color);
      return (BOOL)brush;
   }
0 голосов
/ 30 марта 2011

Это ошибка MFC. Используйте spy ++ монитор вашего приложения, вы обнаружите, что ваше приложение получает много сообщений WM_GETDLGCODE и, кажется, входит в тупик Да, это проблема.

Microsoft опубликовала PRB для решения проблемы. пожалуйста, просмотрите: PRB: дочерний CPropertySheet зависает при переключении фокуса

Короче говоря, добавьте стиль WS_EX_CONTROLPARENT в свой список свойств.

   BOOL CMySheet::OnInitDialog()
   {
             ModifyStyleEx (0, WS_EX_CONTROLPARENT);
             return CPropertySheet::OnInitDialog();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...