如何在C ++中打印粗体字符串?

时间:2010-10-26 08:46:20

标签: c++ string winapi bold

我有一个用C ++编写的旧应用程序。我有0经验,但我想在应用程序中进行一些更改。其中之一就是改变一些文字。问题是更新文本的一部分需要是粗体,但我不知道如何做到这一点。我用Google搜索但没有太大的成功。我想现在就是使用\n\t新标签转到新行。

有任何聪明的建议吗?

修改
代码示例:

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 );

谢谢,

4 个答案:

答案 0 :(得分:10)

C ++中没有粗体文​​本的概念,可能在特定设备中显示字符文本,例如富文本格式或HTML标记或终端屏幕。后者通常涉及发送与该特定终端相关的一些“逃逸序列”。

答案 1 :(得分: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);

我希望这会有所帮助。

答案 2 :(得分:0)

请通过以下链接获取帮助 http://msdn.microsoft.com/en-us/library/dd162499(VS.85).aspx

是的,您必须在对话框类中重写WM_PAINT并调用drawtext函数。

答案 3 :(得分:-1)

在WM_PAINT消息处理程序中使用DrwaText API。dc.DrawText (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE ¦ DT_CENTER ¦ DT_VCENTER); 使用DrawTextEx方法。 如需更多信息,请浏览以下链接

MS-帮助://MS.MSDNQTR.v90.en/gdi/fontext_4pbs.htm