Динамическое изменение статической текстовой подписи CMFCRibbonEdit с помощью MFC (Microsoft Foundation Class) и C++

У меня возникли проблемы с попыткой обновить заголовок (текстовый элемент) поля редактирования в MFC.

Ниже. это то, что я сейчас пробовал. Я знаю, что выбираю правильный элемент, потому что вижу, что всплывающая подсказка изменилась. Текст заголовка рядом с полем редактирования просто становится пустым

* Обновление: после дальнейшего сотрудничества со старшим программистом мы обнаружили, что это, скорее всего, ошибка MFC. Я бы хотел оказаться неправым, потому что обходной путь включает в себя разделение поля редактирования на метку и поле, что далеко не идеально из-за проблем с выравниванием.

      CMFCRibbonBaseElement* pEditBox = (CMFCRibbonBaseElement*)m_wndRibbon.FindByID(EDIT_BOX_ID);
pEditBox->SetText(_T("new Text"));
pEditBox->SetToolTipText(_T("tool tip text"));

С помощью отладчика я также вижу, что m_strText, который в данном случае является заголовком, изменяется. Я пропустил шаг, на котором мне нужно повторно отобразить текст, чтобы он появился? Единственное, что я мог придумать, это вызвать pEditBox->Redraw(); после установки текста, но это ничего не дало.

Другой подход, который я пробовал ниже, заключался в использовании SetText в функции обновления, но это просто меняет текст в поле, а не заголовок. Я подумал, что это может сработать, потому что я смог изменить текст рядом с флажком, используя этот подход.

      ON_UPDATE_COMMAND_UI(EDIT_BOX_ID, &CMyDoc::OnUpdateEditBoxText);

void CMyDoc::OnUpdateEditBoxText(CCmdUI *pCmdUI)
{
 if (//my condition) 
    pCmdUI->SetText(_T("new Text"));
}

Другой подход, который я мог бы использовать, - это просто убрать поле, но pEditBox->SetVisible(FALSE); также не работает для этого поля редактирования.

0 ответов

Другие вопросы по тегам