代码之家  ›  专栏  ›  技术社区  ›  ilija veselica

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

  •  3
  • ilija veselica  · 技术社区  · 14 年前

    我有一个用C++编写的旧应用程序。我有0的经验,但我想在应用程序中做一些改变。其中之一是修改一些文本。问题是更新后的文本部分需要加粗,但我不知道如何做到这一点。我用谷歌搜索了一下,但没有多少成功。我现在只想和 \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 回复  |  直到 14 年前
        1
  •  10
  •   CashCow    14 年前

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

        2
  •  3
  •   John Warlow    14 年前

    好吧,我已经编写了一些代码,这些代码应该概述了您的需求,我还没有编译它,因为我需要编写更多的代码来进行测试,但它应该为您指明正确的方向:

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

    我希望这能有帮助。

        3
  •  0
  •   Raghuram Reddy N    14 年前

    http://msdn.microsoft.com/en-us/library/dd162499(VS.85).aspx

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

        4
  •  -1
  •   Raghuram Reddy N    14 年前

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