首页 - 技巧 - vs2010颜色和字体大小_VS2010 MFC RichEdit控制文本粗体、颜色、字体、大小、下划线、斜体和...

vs2010颜色和字体大小_VS2010 MFC RichEdit控制文本粗体、颜色、字体、大小、下划线、斜体和...

2023-10-08 04:39

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控件更改背景颜色和文字颜色:h​​ttp://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);

具体功能尚未测试。应该可以添加一个按钮,选择一段文本,单击该按钮,然后将文本编程为按钮的预设格式。

初始字体太小,有点难看。

设置方法:工具--选项--环境--字体和颜色--字体/大小

?