首页 新闻 会员 周边

关于MFC dialog

0
[已关闭问题] 关闭于 2020-05-18 11:55

直接上问题:
vc的修改字体对话框修改颜色改不了,我不知道是vc++6.0的问题还是什么,程序肯定没问题,字体,字形,大小都能改就颜色改不了,求大佬指点
图片:
1.
2.
注:改颜色没反应
主要代码:
void CMy3Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
CFont *font=m_text.GetFont();
LOGFONT logfont;
font->GetLogFont(&logfont);
CFontDialog dlg(&logfont);
if(dlg.DoModal()==IDOK)
{
m_font.Detach();
LOGFONT temp;
dlg.GetCurrentFont(&temp);
dlg.GetColor();
m_font.CreateFontIndirect(&temp);
m_text.SetFont(&m_font);
}
}

MFC C
芦苇nb的主页 芦苇nb | 初学一级 | 园豆:197
提问于:2020-05-14 13:10

经过一天的查找终于知道是什么原因了:
对MFC感兴趣的可以去搜一下CFont这个类的说明,反正我没发现里面有明显的颜色设置属性,于是乎我就在书上找到了一个关于WM_CTLCOLOR的监听消息,让VS帮我自动生成了一个监听函数:
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO:  在此更改 DC 的任何特性
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
	pDC->SetTextColor(color);
}
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;

}
这里面的color是我从CFontDialog获取的用户选择的颜色,当选择完成即可改变对应的颜色.
最后希望可以我帮到你们,有问题请指出,谢谢.

芦苇nb 3年前
< >
分享
所有回答(1)
0

经过一天的查找终于知道是什么原因了: 对MFC感兴趣的可以去搜一下CFont这个类的构造函数:
CreateFont(
int nHeight,
int nWidth,
int nEscapement,
int nOrientation,
int nWeight,
BYTE bItalic,
BYTE bUnderline,
BYTE cStrikeOut,
BYTE nCharSet,
BYTE nOutPrecision,
BYTE nClipPrecision,
BYTE nQuality,
BYTE nPitchAndFamily,
LPCTSTR lpszFacename
);
反正我没发现里面有明显的颜色设置属性,于是乎我就在书上找到了一个关于WM_CTLCOLOR的message消息,让VS帮我自动生成了一个监听函数:
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO:  在此更改 DC 的任何特性
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
	pDC->SetTextColor(color);
}
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;

}
这里面的color是我从CFontDialog获取的用户选择的颜色,当选择完成即可改变对应的颜色. 最后希望可以我帮到你们,有问题请指出,谢谢

芦苇nb | 园豆:197 (初学一级) | 2020-05-18 11:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册