Как напечатать жирную строку в C ++? - PullRequest
3 голосов
/ 26 октября 2010

Я получил старое приложение, написанное на C ++. У меня 0 опыта с этим, но я предполагаю внести некоторые изменения в приложение. Одним из них является изменение текста. Проблема в том, что часть обновленного текста должна быть выделена жирным шрифтом, но я понятия не имею, как это сделать. Я гуглил, но без особого успеха. Только думаю, что я сейчас должен перейти на новую строку с \n и новую вкладку с \t.

Любой умный совет?

EDIT:
Пример кода:

BEGIN
    STRING1                              "First Example"
    STRING2                              "Second Example"

И место, где используется STRING1:

// WelcomeTip ---------------------------------------------//
    LPSTR idsWelcomeTip = (LPSTR)GlobalAlloc(GPTR, sizeof(CHAR) * 4098 );
    LoadString( waveInDlg->hInstance, STRING1, idsWelcomeTip, 4098 );
    waveInDlg->hwndWelcomeTip = CreateWindow(
        "STATIC",
        idsWelcomeTip,
        WS_CHILD | WS_VISIBLE | SS_LEFT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        waveInDlg->hwnd,
        NULL,
        waveInDlg->hInstance,
        NULL
    );
    SetWindowLongPtr(waveInDlg->hwndWelcomeTip, GWLP_USERDATA ,(LONG)waveInDlg );
    SendMessage(waveInDlg->hwndWelcomeTip, WM_SETFONT , (WPARAM)waveInDlg->hFontDefault , TRUE );
    ShowWindow(waveInDlg->hwndWelcomeTip, SW_HIDE);
    GlobalFree( (HGLOBAL)idsWelcomeTip );

Спасибо,
Ile

Ответы [ 4 ]

10 голосов
/ 26 октября 2010

В C ++ отсутствует концепция полужирного текста, может быть в конкретном устройстве, отображающем символьный текст, например в расширенном текстовом формате, в тегах HTML или на экране терминала.Последнее обычно включает отправку некоторой «escape-последовательности», относящейся к этому конкретному терминалу.

3 голосов
/ 26 октября 2010

ОК, я написал некоторый код, который должен дать обзор того, что вы ищете, мне не удалось скомпилировать его, так как мне нужно было бы написать намного больше для тестирования, но он должен указать вам в правильном направлении:

// Create the font you need
LOGFONT lf;
zeromemory(&lf, sizeof(LOGFONT))
lf.lfHeight = 20; // 20 pixel high font
lf.lfWeight = FW_BOLD;
strcpy(lf.lfFaceName, "Arial");
HFONT hFont = ::CreateFondIndirect(&lf);

// Set the control to use this font
SendMessage(waveInDlg->hwndWelcomeTip, WM_SETFONT, (WPARAM)hFont, NULL);

Надеюсь, это поможет.

0 голосов
/ 27 октября 2010

Пожалуйста, перейдите по ссылке ниже для помощи http://msdn.microsoft.com/en-us/library/dd162499(VS.85).aspx

Да, вы должны переопределить WM_PAINT в вашем диалоговом классе и вызвать функцию drawtext.

0 голосов
/ 26 октября 2010

Использовать DrwaText API в обработчике сообщений WM_PAINT. dc.DrawText (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE ¦ DT_CENTER ¦ DT_VCENTER); Использовать метод DrawTextEx.Для получения дополнительной информации перейдите по следующей ссылке

ms-help: //MS.MSDNQTR.v90.en/gdi/fontext_4pbs.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...