3

我有一个用 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

4 回答 4

11

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

于 2010-10-26T08:50:24.327 回答
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);

我希望这有帮助。

于 2010-10-26T09:18:37.960 回答
0

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

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

于 2010-10-27T07:39:45.047 回答
-1

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

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

于 2010-10-26T10:41:17.457 回答