MFC — MessageBox с расширенным текстом

Я хочу иметь возможность отображать форматированный текст внутри окна сообщения (например, жирный текст, маркеры, курсив и т. Д.).

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

Может кто-нибудь помочь мне? Я попытался отладки / понимания этого кода напрасно.

Ограничения: (не мой выбор)

  • Должен быть совместим с Windows XP.
  • Я использую Visual C ++ 6.

Как это должно отображаться:

Как это должно отображаться


Как это на самом деле отображает:

введите описание изображения здесь

2

Решение

Просто создайте диалоговое окно с элементом управления RichEdit2 …

В InitInstance добавьте следующий вызов:

// Init RichEdit Library

AfxInitRichEdit2();

В диалоговом окне создайте переменную для элемента управления RichEdit и обновите ее следующим образом:

// Turn Word Wrap on (based on window width)

m_RichEditMsg.SetTargetDevice( NULL, 0);

// Set Base Text

strText = "{\\rtf1\\ansi\\fs20 ";
strText += "{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\\red0\\green255\\blue255;\\red0\\green255\\blue0;\\red255\\green0\\blue0;}";
strText += "{\\f1\\cb1\\cf2\\b Main Title} \\par\\par \\fs18 Other text to add {\\b In Bold} no more in bolb ... \\par";
str.Format( "\\par Id: {\\b %s}", m_strProgId);
strText += str;
strText+= "\\par \\par {\\f1 \\b Please Confirm ...} \\par}";

// Update Controls

m_RichEditMsg.SetWindowText( strText);

Просто создайте свое собственное сообщение, и вы получите смелый, цветной, …

3

Другие решения

Я решил эту проблему благодаря очень полезным предложениям DavidK (см. Комментарии к вопросу). FIX для Windows 2000 Комментарий исправил это аккуратно.

0

По вопросам рекламы [email protected]