为什么从CButton继承来的按钮用SetFont不起作用 在基于对话框的应用程序,为了实现透明按钮,建了一个新类,从CButton继承。但是它的字体比较大,想改变字体,但用SetFont函数不起作用。这个问题改怎么解决,谢谢各位了。在线等待 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CButton* btn1=(CButton*)GetDlgItem(IDC_btn1);CClientDC dc (btn1);CFont m_font;m_font.CreateFont(MulDiv (8, -dc.GetDeviceCaps (LOGPIXELSY),72),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,VARIABLE_PITCH | FF_SWISS,_T ("Arial"));btn1->SetFont(&m_font,TRUE); SetFont 是起作用的,你在画标题文字的时候发WM_GETFONT消息取得当前字体,然后选进DC里再画按钮标题即可 CFont m_font; //这个变量不要用局部变量 CFont定义成全局变量或static 变量。 CButton* btn1=(CButton*)GetDlgItem(IDC_btn1); CClientDC dc (btn1); CFont m_font; m_font.CreateFont(MulDiv (8, -dc.GetDeviceCaps (LOGPIXELSY), 72),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET, OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY, VARIABLE_PITCH | FF_SWISS,_T ("Arial")); btn1->SetFont(&m_font,TRUE);.........................................................你说的方法我试了,还是不行。我是这样做的:CTransParentButton m_btn1这个是我从CButton继承来的后来我在InitDialog中: CFont *f = new CFont; f->CreateFont(12, 0, 0, 0, FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("宋体")); m_btn1.SetFont(f,TRUE); m_btn1.SetIcon(IDI_ICON_EXIT,IDI_ICON_EXIT); m_btn1.SetIconYPos(1); m_btn1.SetAlign(AL_TOP); m_btn1.SetWindowText("设置");但是,字体没有变化 根据上面的代码,如果我用:CButton btn;btn.SetFont(f);这个按钮的字体就会有改变 问题解决了在CButton的派生类中设置字体就ok了 跪求答案 socket通信乱码问题(TCP) 我在对话框中加了几个按钮,正常显示,又加了两个,可后面加的在对话框显示出来后不见了,点击按钮区域才出现? 为什么视图栏里的类老是看不见了呢? DAO编程需要包含哪些头文件? 为什么下面这种情况无法中止线程? 想做嵌入式开发,请问怎么入门 VC++的有关音频的编程,请教啊! 不看这里你回后悔! MFC要过时了?郁闷!!!!!!!!!!!!! 请问关于DataGrid的问题 我现在要想取一个程序窗体上的文本,怎么办?
CClientDC dc (btn1);
CFont m_font;
m_font.CreateFont(MulDiv (8, -dc.GetDeviceCaps (LOGPIXELSY),
72),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH | FF_SWISS,_T ("Arial"));
btn1->SetFont(&m_font,TRUE);
CFont m_font; //这个变量不要用局部变量
CClientDC dc (btn1);
CFont m_font;
m_font.CreateFont(MulDiv (8, -dc.GetDeviceCaps (LOGPIXELSY),
72),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,
OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
VARIABLE_PITCH | FF_SWISS,_T ("Arial"));
btn1->SetFont(&m_font,TRUE);.........................................................
你说的方法我试了,还是不行。我是这样做的:
CTransParentButton m_btn1
这个是我从CButton继承来的
后来我在InitDialog中:
CFont *f = new CFont;
f->CreateFont(12, 0, 0, 0, FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, _T("宋体")); m_btn1.SetFont(f,TRUE);
m_btn1.SetIcon(IDI_ICON_EXIT,IDI_ICON_EXIT);
m_btn1.SetIconYPos(1);
m_btn1.SetAlign(AL_TOP);
m_btn1.SetWindowText("设置");
但是,字体没有变化
CButton btn;
btn.SetFont(f);
这个按钮的字体就会有改变
在CButton的派生类中设置字体就ok了