对话框字体修改!
想对对话框上的字体进行修改,要求对不同的static字体样式、大下不同。 问题点数:20、回复次数:17Top
1 楼chenzhou35(vcworm.51.net)回复于 2003-01-03 11:52:51 得分 0
m_mystatic.SetFont()Top
2 楼prettywolf(多情自古空余恨,此恨绵绵无绝期)回复于 2003-01-03 12:04:16 得分 0
CFont font;
font.CreatePointFont(...);
m_mystatic.SetFont(font);//这里我不太记得了,好像是&font的。Top
3 楼qrlvls( 空 气 )回复于 2003-01-03 12:17:39 得分 0
那么你应该重载的是CStatic类,而不是对对话框进行操作
是不是有SetFont我都记不清楚了,如果有的话我就亏大了,我都是重载过来的。Top
4 楼zswzwy(酒是穿肠毒药 @ 色是刮骨钢刀)回复于 2003-01-03 12:24:13 得分 0
好像要重载。Top
5 楼zxcsy()回复于 2003-01-03 13:00:20 得分 0
又没改变字体的控件Top
6 楼zxcsy()回复于 2003-01-03 13:29:07 得分 0
怎么不行呀?代码如下
OnInitDialog()
{
CDialog::OnInitDialog();
CFont font;
font.CreateFont(15,
0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH|FF_SWISS,_T("楷体"));
m_sta1.SetFont(&font);//
return TRUE;
}
是否要重载static类Top
7 楼cuterain(eM魔鬼)回复于 2003-01-03 13:37:29 得分 0
没有必要重载啊!让让我看看你的代码?
CStatic *pStiatic=(CStatic *)GetDlgItem(IDC_STATIC);
pStiatic->SetFont(&m_Font,FALSE);
//把你的代码修改成上面,IDC_STATIC为你的id
Top
8 楼cuterain(eM魔鬼)回复于 2003-01-03 13:39:44 得分 0
补充:每个窗口都可以设置自己的字体。当然重载也能实现了!
再补充:给分吧!哈哈Top
9 楼zxcsy()回复于 2003-01-03 13:59:16 得分 0
还不行,看看下面代码有没错
BOOL CPara::OnInitDialog()
{
CDialog::OnInitDialog();
CStatic *pStiatic=(CStatic *)GetDlgItem(IDC_STATIC1);
CFont font;
font.CreateFont(15,
0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH|FF_SWISS,_T("楷体"));
pStiatic->SetFont(&font,FALSE);
return TRUE;
}Top
10 楼cuterain(eM魔鬼)回复于 2003-01-08 13:19:58 得分 0
font.CreateFont(15,
0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH|FF_SWISS,_T("楷体"));
看看msdn好了Top
11 楼zswzwy(酒是穿肠毒药 @ 色是刮骨钢刀)回复于 2003-01-08 13:48:10 得分 0
CDC* pDC=GetDC();
m_font.CreateFont(MulDiv(8,-pDC->GetDeviceCaps(LOGPIXELSY),20),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,VARIABLE_PITCH | FF_SWISS,_T("Arial"));
m_button.SetFont(&m_font);
把Button改为static,static的ID一定要改变.ID_MYSTATIC......
Top
12 楼linxi075(林夕)回复于 2003-01-08 14:07:15 得分 0
上面说的都有点道理,但好像都不完整,现在我没时间,有时间我给你说
不用重载Top
13 楼zxcsy()回复于 2003-01-08 16:08:40 得分 0
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC1);
CFont font;
CDC* pDC=GetDC();
font.CreateFont(MulDiv(15,-pDC->GetDeviceCaps(LOGPIXELSY),20),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,VARIABLE_PITCH | FF_SWISS,_T("宋体"));
pStatic->SetFont(&font,FALSE);Top
14 楼zxcsy()回复于 2003-01-08 16:09:08 得分 0
上面的还是没反应Top
15 楼zxcsy()回复于 2003-01-17 14:51:16 得分 0
气愤
没有解决问题Top
16 楼dispatchwengqun(≡≡★★郁闷★★≡≡)回复于 2003-01-17 15:05:00 得分 20
前面给出的代码思路没错,但有一个地方错了,也就是在函数内定的的CFont实例在退出函数时就被构柝掉了,Dialog的控件是得不到真正的字体的。
应该在Dialog内定义CFont的实例,然后再使用。
例如:
class CTestdlgDlg : public CDialog
{
CFont m_font;
}
BOOL CTestdlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
m_font.CreatePointFont(200, _T("Arail"));
GetDlgItem(IDC_STATIC1)->SetFont(&m_font);
...
}
Top
17 楼zxcsy()回复于 2003-01-20 10:17:54 得分 0
谢谢dispatchwengqun(ougun)
不过字体大下是能改了,只是为什么不能改变字体
比如m_font.CreatePointFont(200, _T("华文彩云"));就不行
另外多问一句,能改变字体颜色吗Top




