关于SetWindowText的一个问题

Renex 2002-08-02 02:44:08
有没有办法改SetWindowText输出的字的字体啊?
...全文
365 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
司马青衫依旧 2002-08-02
  • 打赏
  • 举报
回复
好像以前有人问过,你应该搜索一下。
不过,我也不知道,但是我十分关注。
Renex 2002-08-02
  • 打赏
  • 举报
回复
好像不行耶
shlife 2002-08-02
  • 打赏
  • 举报
回复
每个从CWnd继承的类都有SetFont(CFont *pFont)方法,要改变CEdit或者CButton的显示字体,可以在SetWindowText()前调用SetFont该方法。
对于CEdit继承类的显示字体,还可以使用下面的方法:
void CMyEdit::SetEditFont(LOGFONT lFont)
{
//m_Font.CreateFontIndirect(&lFont) ;

BOOL bResult = FALSE;

// Get device context for this edit box.

CDC* pDC = this->GetDC();

// Delete previous CGdiObject and free its memory.

m_Font.DeleteObject();

// Create a new Font object.

lFont.lfHeight = 88 ;

bResult = m_Font.CreatePointFontIndirect(&lFont,pDC);

//if (! bResult) return bResult;

// Set the new font for this edit box.

CEdit::SetFont(&m_Font,TRUE);

// Release the device context.

ReleaseDC(pDC);

return ;

}
在外部调用CMyEdit::SetWindowText()前,先调用SetEditFont()即可,试试吧!
Renex 2002-08-02
  • 打赏
  • 举报
回复
CFont m_font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); // zero out structure
lf.lfHeight = 9; // request a 12-pixel-height font
strcpy(lf.lfFaceName, "宋体"); // request a face name "Arial"
VERIFY(m_font.CreateFontIndirect(&lf)); // create the font

朋友这样简单一点
JaneQian 2002-08-02
  • 打赏
  • 举报
回复
有这样的函数:
定义一个CFont对象CFont MyFont,
再Create一下:
MyFont.CreateFont(16,9,0,0,0/*FW_NORMAL*/,0,0,0,
0/*DEFAULT_CHARSET*/,0/*OUT_DEFAULT_PRECIS*/,0/*CLIP_DEFAULT_PRECIS*/,
0/*DEFAULT_QUALITY*/,0/*DEFAULT_PITCH*/,blank);
然后用SetFont(&MyFont);

想怎么改就怎么改,有13个参数呢。呵呵
Renex 2002-08-02
  • 打赏
  • 举报
回复
我try一下
Renex 2002-08-02
  • 打赏
  • 举报
回复
虚函数?
rokia 2002-08-02
  • 打赏
  • 举报
回复
我想你直接得到它的CDC去自己畫,我曾經在托盤區裡寫過的。想寫什麼樣都可以。
dy_paradise 2002-08-02
  • 打赏
  • 举报
回复
没听说过, 帮你UP一下
zmxjh 2002-08-02
  • 打赏
  • 举报
回复
说错了应该是:CButton::DrawItem

zmxjh 2002-08-02
  • 打赏
  • 举报
回复
OnDrawItem 好像是这个!
Renex 2002-08-02
  • 打赏
  • 举报
回复
我就是想给一个CEdit或者CButton写些字,但是不想用BS_OWNERDRAW样式,
但是没有办法写上去,不知道什么消息控制重画,所以就用setwindowtext可惜这个不能改字体……大概就是这样
Renex 2002-08-02
  • 打赏
  • 举报
回复
CEdit难道没有OnDraw这个消息吗?那是什么控制他自己重画的呢?
zmxjh 2002-08-02
  • 打赏
  • 举报
回复
说说你要做什么吧,估计有其它办法!
Renex 2002-08-02
  • 打赏
  • 举报
回复
这些办法都不行
rokia 2002-08-02
  • 打赏
  • 举报
回复
估計沒用
zmxjh 2002-08-02
  • 打赏
  • 举报
回复
据我所知,没有,只能取在窗口的CDC,然后用TextOut或DrawState方式输出
wuxuan 2002-08-02
  • 打赏
  • 举报
回复
gz
spwnihao 2002-08-02
  • 打赏
  • 举报
回复
CFont font1;
font1.CreateFont(...);
CEdit *edit1;
edit1=(CEdit*)GetDlgItem(IDC_EDIT1);
edit1->setFont(font1);
edit1->SetWindowText("aaaaaaaa");
//没测试,给你一个思路,可能有的就不能改变字体吧,例如窗体标题
agui79 2002-08-02
  • 打赏
  • 举报
回复
gz
加载更多回复(1)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧