MFC SDI 从 INI 读取并在更改属性时更新视图字符串
MFC SDI read from an INI and update view string while changing attributes
第一次post,如有不当之处,敬请谅解
我的标题简要描述了我遇到的问题。我有一个学校项目,我从一个带有单个文档视图的 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
到目前为止,一切进展顺利。下一步是获取我在资源编辑器中创建的 'static text box' 并将其更改为来自 ini 的数据,即 'Here is your data'.
SetDlgItemText(StringToChange, INIValue);
这很完美。所以我设法改变了我想要的,但现在是困难的部分。在使用
之前,我需要将整个字符串加粗
SetDlgItemText(StringToChange, INIValue);
在过去的 5 天里,我 运行 遇到了很多问题。我已经尝试了 运行 在 google 和堆栈溢出上遇到的所有问题。我 运行 尝试使用 RTF 控件?尝试转换为 html 加粗然后再返回? 8 位或 16 位的问题? unicode 或类似的东西。我已经 运行 进入像 _T("some string") 这样的宏,它显然不接受字符串类型的变量。没有什么对我有用。我真正可以使用的是某种示例,它根本不必与我的相关。我可以使用的基础。在你 link 我到另一个网站或以前的 post - 我 gua运行 给你看之前我已经看过并试过了。我真的很希望有人 post 一小部分代码可以帮助我入门。
您需要使用加粗字体才能达到您的要求:
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;
成为您 class 的成员(将其放入头文件)。
如果您想要更多的灵活性,请使用 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);
}
第一次post,如有不当之处,敬请谅解
我的标题简要描述了我遇到的问题。我有一个学校项目,我从一个带有单个文档视图的 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
到目前为止,一切进展顺利。下一步是获取我在资源编辑器中创建的 'static text box' 并将其更改为来自 ini 的数据,即 'Here is your data'.
SetDlgItemText(StringToChange, INIValue);
这很完美。所以我设法改变了我想要的,但现在是困难的部分。在使用
之前,我需要将整个字符串加粗SetDlgItemText(StringToChange, INIValue);
在过去的 5 天里,我 运行 遇到了很多问题。我已经尝试了 运行 在 google 和堆栈溢出上遇到的所有问题。我 运行 尝试使用 RTF 控件?尝试转换为 html 加粗然后再返回? 8 位或 16 位的问题? unicode 或类似的东西。我已经 运行 进入像 _T("some string") 这样的宏,它显然不接受字符串类型的变量。没有什么对我有用。我真正可以使用的是某种示例,它根本不必与我的相关。我可以使用的基础。在你 link 我到另一个网站或以前的 post - 我 gua运行 给你看之前我已经看过并试过了。我真的很希望有人 post 一小部分代码可以帮助我入门。
您需要使用加粗字体才能达到您的要求:
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;
成为您 class 的成员(将其放入头文件)。
如果您想要更多的灵活性,请使用 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);
}