我想使文本框中的字体加粗,其他属性如字体等等不变。如何实现?
请写详悉点,谢谢! 问题点数:30、回复次数:13Top
2 楼gboy(★)(★)回复于 2002-02-08 13:03:54 得分 5
CFont* pFont=m_edit.GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfWeight = 700;
m_font.CreateFontIndirect(&lf);
m_edit.SetFont(&m_font);
Top
3 楼Mictel(Mictel)回复于 2002-02-08 13:11:27 得分 0
m_font是什么?是不是应当是 pFont 啊?
我改成pFont 运行时有问题Top
4 楼qjwj_hl(玩的不好)回复于 2002-02-08 13:17:29 得分 0
论坛怎么成了这个样子??我怎么提问题??Top
5 楼gboy(★)(★)回复于 2002-02-08 13:20:34 得分 10
m_font 可以是你的一个类成员,不能用 pFont
CFont m_fontTop
6 楼newgenius(流星飞雨)回复于 2002-02-08 13:40:50 得分 5
CFont* pFont=m_edit.GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfWeight = 700;
m_font.CreateFontIndirect(&lf);
m_edit.SetFont(&m_font);//m_edit是EDIT控件的控制变量
将这段代码放在OnInitDialog()中可以正常运行Top
7 楼Mictel(Mictel)回复于 2002-02-08 14:05:49 得分 0
o,成功了,但是:
为何只能执行一次,比如我有一个按钮控制文本框中文本的加粗,按一下执行上面的程序,字体变粗了。如果再按一下程序就出错????Top
8 楼newgenius(流星飞雨)回复于 2002-02-08 14:25:30 得分 10
CFont* pFont=m_edit.GetFont();
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfWeight = 700;
m_font.CreateFontIndirect(&lf);
将这段代码放在OnInitDialog()
然后在按钮对应的命令函数中CXXX:OnXXX()
中加入m_edit.SetFont(&m_font);即可以动态控制了Top
9 楼AttaBoy(网际游魂)回复于 2002-02-09 15:08:03 得分 0
是因为m_font是类成员变量,你要用它创建字体当然只能创建一次了,所以在下次创建之前,应该先释放再创建.Top
10 楼luchong2000(乐悟)回复于 2002-02-18 11:28:37 得分 0
??Top
11 楼cloudrain(supxb)回复于 2002-02-19 16:31:21 得分 0
每次使用m_font时先判断其是否不为空,若不空就先释放它再用Top
12 楼XiaoBaiCai(小白菜)回复于 2002-02-21 08:57:53 得分 0
哎,怎么没有难一些、水平高一些的问题?Top
13 楼ck1976(ck1976)回复于 2002-02-22 13:15:32 得分 0
CEdit是从CWnd派生的,支持字体的改变,最好的办法应该是从CEdit派生CFontEdit类,在该类中更改字体
// Create a new font so we can change it later
CFont * f = GetFont();
CFont newfont;
LOGFONT lf;
if(f != NULL)
{ /* Set up duplicate font */
f- >GetObject(sizeof(LOGFONT), &lf);
// change font size & bold style with lf here.
...
newfont.CreateFontIndirect(&lf);
} /* Set up duplicate font */
else
{ /* Use default font spec */
newfont.CreateStockObject(ANSI_VAR_FONT);
} /* Use default font spec */
SetFont(newfont);
newfont.Detach();
HFONT hFont = (HFONT)::SendMessage( m_hName, WM_GETFONT, 0, 0 );
if(hFont==0) hFont=(HFONT)::GetStockObject(SYSTEM_FONT);
LOGFONT dtLogFont;
::GetObject( hFont, sizeof(dtLogFont), &dtLogFont );
dtLogFont.lfWeight = FW_BOLD;
hFont = ::CreateFontIndirect(&dtLogFont);
::SendMessage( m_hName, WM_SETFONT, (WPARAM)hFont, MAKELONG(TRUE,0) );