我创建了一个MDI,在DrawBackground(CDC *pDC)里面写了一些字然后想通过一个设置对话框,来设置字体。一旦选择了一种字体,屏幕上原来的字就变成那种字体。所以我就在设置对话框里的一个按钮来响应一个函数,用CFontDialog类创建字体选择对话框,并创建了CFont类对象m_Fontvoid CDlgDisplay::OnChooseText()
{
CFontDialog dlg;
dlg.DoModol();
m_Font.CreateFontIndirect(dlg.m_cf.lpLogFont);
}然后想在绘图函数中显示,现在View类里面定义了CFont类对象m_font,
void CTestView::OnDisplay()
{
CDlgDisplay dlg;
if(IDOK==dlg.DoModol())
{
m_font=dlg.m_Font;//这行出错,说不能用等号
}
...
...
DrawBackground(pDC);//在绘制函数里用m_font来写字
...
}编译时,提示错误不能用=,‘Operator ='function is unavaliable.怎么解决呢?谢谢
{
CFontDialog dlg;
dlg.DoModol();
m_Font.CreateFontIndirect(dlg.m_cf.lpLogFont);
}然后想在绘图函数中显示,现在View类里面定义了CFont类对象m_font,
void CTestView::OnDisplay()
{
CDlgDisplay dlg;
if(IDOK==dlg.DoModol())
{
m_font=dlg.m_Font;//这行出错,说不能用等号
}
...
...
DrawBackground(pDC);//在绘制函数里用m_font来写字
...
}编译时,提示错误不能用=,‘Operator ='function is unavaliable.怎么解决呢?谢谢
{
CDlgDisplay dlg;
if(IDOK==dlg.DoModol())
{
//m_font=dlg.m_Font;//这行出错,说不能用等号
//CFont没有重载+操作符
m_Font.CreateFontIndirect(dlg.m_cf.lpLogFont); }
m_hfont = m_Font.CreateFontIndirect(dlg.m_cf.lpLogFont); //用的时候
CFont* pfont = CFont::FromHandle(m_hfont);
同意楼上的,用HFONT把创建的CFont对象保存起来,然后在使用保存的数据就OK了
必须使用SDK函数
m_hfont = ::CreateFontIndirect(dlg.m_cf.lpLogFont);
才行