直接上问题:
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感兴趣的可以去搜一下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获取的用户选择的颜色,当选择完成即可改变对应的颜色. 最后希望可以我帮到你们,有问题请指出,谢谢
经过一天的查找终于知道是什么原因了:
对MFC感兴趣的可以去搜一下CFont这个类的说明,反正我没发现里面有明显的颜色设置属性,于是乎我就在书上找到了一个关于WM_CTLCOLOR的监听消息,让VS帮我自动生成了一个监听函数:
HBRUSH CMFCApplication1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
}
– 芦苇nb 4年前这里面的color是我从CFontDialog获取的用户选择的颜色,当选择完成即可改变对应的颜色.
最后希望可以我帮到你们,有问题请指出,谢谢.