0

第一次发帖,请原谅我可能带来的任何不当礼仪。

我的标题简要描述了我遇到的问题。我有一个学校项目,我从一个具有单个文档视图的 MFC 应用程序开始,我只需要在我的视图上显示一个简单的文本,但是这个文本来自一个简单的 INI 文件。

LPCTSTR path = _T("C:\\Users\\Steve\\Documents\\WhereDataIs.ini");
TCHAR INIValue[256];
GetPrivateProfileString(_T("SETUP"), _T("Introduction"), _T("File Could Not Be Found"), INIValue, 256, path);

好的,现在我的ini文件只包含这个......

[SETUP]

Introduction = Here is your data

到目前为止,一切进展顺利。下一步是获取我在资源编辑器中创建的“静态文本框”并将其更改为来自 ini 的数据,即“这是您的数据”。

SetDlgItemText(StringToChange, INIValue);

这很完美。所以我设法改变了我想要的东西,但现在是困难的部分。我需要在使用之前将整个字符串加粗

SetDlgItemText(StringToChange, INIValue);

在过去的 5 天里,我遇到了很多问题。我已经尝试了我在谷歌上遇到的所有问题和堆栈溢出。我遇到了尝试使用 RTF 控件?试图转换为 html 加粗然后回来?8位或16位的问题?unicode 或类似的东西。我遇到了像 _T("some string") 这样的宏,它显然不接受字符串类型的变量。没有什么对我有用。我真正可以使用的是某种示例,它根本不必与我的相关。我可以与基地一起工作的东西。在您将我链接到另一个网站或以前的帖子之前 - 我向您保证我已经看过并尝试过。我真的很希望有人发布一小部分代码来帮助我入门。

4

1 回答 1

1

您需要使用粗体样式的字体来实现您所需要的:

 m_font.CreateFont(16, 0, 0, 0, FW_BOLD, FALSE, FALSE, 0, DEFAULT_CHARSET,
 OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, 
 DEFAULT_PITCH | FF_SWISS, _T("MS Sans Serif"));
 m_YourStaticControl.SetFont(&m_font); 

成为CFont m_font;您班级的成员(将其放在头文件中)。

如果您想要更大的灵活性,请使用 RichEdit 控件。这是使用不同样式附加文本的辅助函数:

void AddToRichText(CRichEditCtrl &rEdit, const CString& sNewText, COLORREF color, BOOL bBold, BOOL bUnderline, BOOL bItalic)
{
    int iTotalTextLength = rEdit.GetWindowTextLength();

    rEdit.SetSel(iTotalTextLength, iTotalTextLength);

    CHARFORMAT cf;
    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_COLOR | CFM_UNDERLINE | CFM_BOLD | CFM_ITALIC;

    DWORD dwEffects = CFE_AUTOCOLOR;
    if (!bBold)
        dwEffects |= CFE_BOLD;

    if (!bUnderline)
        dwEffects |= CFE_UNDERLINE;

    if (!bItalic)
        dwEffects |= CFE_ITALIC;

    cf.dwEffects = (unsigned long)~dwEffects;

    cf.crTextColor = color;
    rEdit.SetSelectionCharFormat(cf);

    rEdit.ReplaceSel(sNewText);
    rEdit.HideSelection(TRUE, FALSE);
}
于 2016-05-25T05:47:55.950 回答