Перерисовка элементов управления завершается с ошибкой, когда элементы управления Edit выдают предупреждение Too Tip в дC++

Программы на C++. Форум разработчиков
Anonymous
 Перерисовка элементов управления завершается с ошибкой, когда элементы управления Edit выдают предупреждение Too Tip в д

Сообщение Anonymous »

Я разрабатывал диалоговое окно MFC, используя элементы управления CXTPDialog, производные от CXTP. Я использовал CSliderCtrl и CXTPEdit.
Я установил некоторые определенные диапазоны для каждого параметра элемента управления редактированием. Всякий раз, когда значение превышается и всплывающая подсказка с предупреждением появляется, элементы управления, связанные с ним (а также смежными элементами управления), имеют проблемы с рисованием, как показано ниже.
Интерфейс элемента управления слайдером кажется сломанным, который примыкает к CEdit элемент управления (отображается серая часть)
Несколько элементов управления сталкиваются с проблемами рисования (отображается серая часть)
Диалоговое окно, содержащее эти элементы управления, загружается в родительское диалоговое окно используя Dialog.Create() и перемещаясь в его текущую позицию. Это полный вид диалогового окна с элементом управления.
Полный диалог, включая элемент управления.
Цвет OninitColor диалогового окна определяется, как показано ниже. SetupDialog — это диалог с элементами управления.

Код: Выделить всё

HBRUSH SetupDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{

HBRUSH hBrush = nullptr;

if (nCtlColor == CTLCOLOR_DLG)
{
hBrush = m_BrushWhite; // Use the white brush for the dialog background
}
else if (nCtlColor == CTLCOLOR_EDIT || nCtlColor == CTLCOLOR_LISTBOX)
{
hBrush = m_BrushEdit;
}
else
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(ThemeDefines()->clrDarkTextColor);

hBrush = m_BrushWhite;
}

return hBrush == nullptr ? CXTPDialog::OnCtlColor(pDC, pWnd, nCtlColor) : hBrush;
}
Часть DDX для исходного поля редактирования и ползунка

Код: Выделить всё

void SetupDialog::DoDataExchange(CDataExchange* pDX)
{
CXTPDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_DR_SEED_COUNT_EDIT, m_editUMAPSeed);
DDX_Control(pDX, IDC_DR_SEED_SLIDER, m_sliderUMAPSeed);
DDX_Text(pDX, IDC_DR_SEED_COUNT_EDIT, m_nUMAPSeed);
DDV_MinMaxInt(pDX, m_nUMAPSeed, MIN_SEED, MAX_SEED);
}
Я видел, что это связано с проблемой фокуса, но не мог точно сказать, как это исправить. Пожалуйста, помогите мне здесь.
Нужно ли мне переопределить ondraw() или другие функции?
Я пытался поискать в Интернете информацию об особенности этого вопроса, но ничего хорошего не получилось.

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-mfc-dial

Вернуться в «C++»