1.更改字体大小:
方法一:
第一步:在Dlg类中添加一个类成员变量:?CFont m_editFont;
注意:这里的Font对象必须是类成员变量,而不是局部变量,否则只会改变光标的大小,而不会改变字体的大小。
步骤2:添加编辑变量m_editPlace,并在OnInitDialog方法中添加以下语句:
m_editFont.CreatePointFont(180, "宋体");
m_editPlace.SetFont(&m_editFont); //?设置新字体
方法2:
也可以通过在OnInitDialog方法中添加以下语句来实现:
CFont* ptf=m_editPlace.GetFont(); //?获取原始字体
LOGFONT lf;
ptf->GetLogFont(&lf);
lf.lf高度 = 20; //?改变字体高度
strcpy(lf.lfFaceName,“官方脚本”); //?更改字体名称
m_editFont.CreateFontIndirect(&lf);
m_editPlace.SetFont(&m_editFont); //?设置新字体
注意:If 是一个新的结构体变量,GetLogFont 函数将 ptf 中的 LOGFONT 结构体变量复制到 If 中,因此更改 If 并不意味着更改 ptf 中的 LOGFONT 变量。所以下面必须添加这两句来创建新的字体对象
m_editFont.CreateFontIndirect(&lf);
m_editPlace.SetFont(&m_editFont); //?设置新字体
2。设置字体颜色:
1。创建一个新的基于对话框的程序,
2。添加一个pDC->SetTextColor(RGB(255,0,0));//设置其文本显示编辑控件,id为IDC_EDIT_DEMO3。在 CXXXDlg 类向导中添加 WM_CTLCOLOR 响应函数,并编写以下代码: HBRUSH CChangeColor_EditDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 // TODO : 如果默认的画笔不是所需的画笔,则返回另一个画笔
开关(pWnd->GetDlgCtrlID())
{
case IDC_EDIT_DEMO: pDC->SetTextColor(RGB(255,0,0));//设置他的文字显示
断裂;
}
返回hbr;
}
还可以参考MFC EDIT控件更改背景颜色和文字颜色:http://www.genealogy-computer-tips.com/wjeson/article/details/7382364
使用前的工作
添加RichEdit控件并在程序开头初始化AfxInitRichEdit2()。如果没有这一步,就会闪退。
BOOL CMOSHENApp::InitInstance()
{
AfxInitRichEdit2(); //RichEdit 2.0控件必须在CWinApp函数中初始化
返回TRUE;
}
//添加对话框类头文件:CRichEditCtrl m_richedit;
将以下代码添加到颜色按钮
//.h
afx_msg void OnBnClickedBtncolor();
//RichEidt2.0字体设置颜色
void CUserManual::OnBnClickedBtncolor()
{
// TODO:在此处添加控制通知处理程序代码
字符格式 cf = { 0 };
cf.cbSize = sizeof(CHARFORMAT);
m_richedit.GetSelectionCharFormat(cf);
CColorDialog colorDialog(cf.crTextColor);
if (colorDialog.DoModal() == IDOK)
{
cf.crTextColor = colorDialog.GetColor();
cf.dwMask = CFM_COLOR;
cf.dwEffects = 0;
m_richedit.SetSelectionCharFormat(cf);
}
}
向字体按钮添加代码
//.h
afx_msg void OnBnClickedBtnfont();
//.cpp
//RichEidt2.0字体设置字体
void CUserManual::OnBnClickedBtnfont()
{
// TODO:在此处添加控制通知处理程序代码
字符格式 cf = { 0 };
cf.cbSize = sizeof(CHARFORMAT);
m_richedit.GetSelectionCharFormat(cf);
CFontDialog 字体对话框(cf);
if (fontDialog.DoModal() == IDOK)
{
fontDialog.GetCharFormat(cf);
m_richedit.SetSelectionCharFormat(cf);
}
}
上面的例子都是后来改的,那么我在编码的时候如何直接在RichEdit控件中更改字体格式呢?下面的例子可以作为参考:
示例:粗体
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.dwEffects = CFE_BOLD; //设置粗体,取消使用cf.dwEffects&=~CFE_BOLD;
cf.dwMask = CFM_BOLD;
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:字体大小
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.y高度 = 300; //字体大小(不是我们常见的字体大小概念)
cf.dwMask = CFM_SIZE;
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:设置斜体
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.dwEffects = CFE_ITALIC;//设置斜体,取消使用cf.dwEffects&=~CFE_ITALIC;
cf.dwMask = CFM_ITALIC;
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:下划线
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.dwMask|=CFM_UNDERLINE;
cf.dwEffects|=CFE_UNDERLINE;//设置下划线并取消使用cf.dwEffects&=~CFE_UNDERLINE;
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:设置颜色
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.dwMask|=CFM_COLOR;
cf.crTextColor = RGB(255,0,0);//设置颜色
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:设置字体
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);//RichEdit
CHARFORMAT cf; //定义字体格式结构体变量
cf.cbSize = sizeof(cf);
cf.dwMask|=CFM_FACE;
_tcscpy(cf.szFaceName ,_T("官方文字")); //设置字体
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:设置行距
BOOL CUserManual::OnInitDialog()
{
CRichEditCtrl* m_pRichEdit;
m_pRichEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);
PARAFORMAT2 pf;
memset(&pf, 0, sizeof(pf));
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_LINESPACING | PFM_SPACEAFTER;
pf.dyLineSpacing = 800;
pf.bLineSpacingRule = 1;
m_pRichEdit->SetParaFormat(pf); //控制变量
m_pRichEdit->设置默认字符格式(cf); //设置控件默认字体格式
返回TRUE;
}
示例:添加按钮并选择某个段落以重新格式化
长 nStart = 0;
long nEnd = m_pRichEdit->GetTextLength();
m_pRichEdit->SetSel(nStart,nEnd);
m_pRichEdit->SetSelectionCharFormat(cf);
具体功能尚未测试。应该可以添加一个按钮,选择一段文本,单击该按钮,然后将文本编程为按钮的预设格式。
初始字体太小,有点难看。
设置方法:工具--选项--环境--字体和颜色--字体/大小
?