2010-10-26 5 views
3

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

Какой-нибудь умный совет?

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

+0

Windows или Linux? –

+0

Добавить сведения: что такое пользовательский интерфейс? MFC? Windows Forms? Веб-приложение? C++ не имеет понятия шрифтов - это пользовательский интерфейс. –

+0

приложение консоли или окон? –

ответ

10

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

3

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

// 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

Дело в том, что мне нужна только часть строки, чтобы она была жирной.Например: Первый Пример (так будет выглядеть в HTML). Спасибо! –

+1

Ах, не уверен, как или если вы можете сделать это со статическим контролем. Возможно, вы могли бы сделать что-то вроде этого с помощью текстового элемента с поддержкой только для чтения. – JLWarlow

+1

+1, тогда богатый текст является правильным решением. Обычная статическая метка предназначена для простых случаев. – MSalters

-1

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

мс-помощи: //MS.MSDNQTR.v90.en/gdi/fontext_4pbs.htm

+0

Какой WM_PAINT? '' STATIC "' - это встроенный класс Windows со своим собственным WndProc. – MSalters

Смежные вопросы