MFC中怎么修改对话框标题字体大小(属性里修改除外)?

MFC中怎么修改对话框标题字体大小(属性里修改除外)?,第1张

1 VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用梁缺CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。 

    例子: 

    1、改静态文体的ID,如:IDC_STATIC1 

    2、添加一个Edit控件,建立一个关联的控件m_editControl。 

    3、在OnInitDialog中添加如下代码: 

CFont * f 

     f = new CFont 

     f->CreateFont(16, // nHeight 

     0, // nWidth 

     0, // nEscapement 

     0, // nOrientation 

     FW_BOLD, // nWeight 

     TRUE, // bItalic 

     FALSE, // bUnderline 

     0, // cStrikeOut 

     ANSI_CHARSET, // nCharSet 

     OUT_DEFAULT_PRECIS, // nOutPrecision 

     CLIP_DEFAULT_PRECIS, // nClipPrecision 

     DEFAULT_QUALITY, // nQuality 

     DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily 

     _T("Arial")) // lpszFac 

   

     GetDlgItem(IDC_STATIC1)->SetFont(f) 

需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量, 在非MFC程序,首先敬乎用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。

实例下载:http://www.china-askpro.com/download/CtrlFont.zip

 

2 但是整个对话框或窗口的字体的大小,使用对话框或窗口的SetFont()函数却没有任何的作用.可以在初始化时遍历每个控件分别设置来处理,但这里说另一种使用回调函数的简单方法:

   :调用系统的API:::EnumChildWindows(). ,传入回调函数和重新定义的字体.(第一个参数不用管啊,本来就有啊)

)

   1)在文档视图结构中CMainFrame::OnCreate().中调用::EnumChildWindows(). 实现所有窗口和子窗口字橡稿辩体改变

   2) 在对话框的OnInitDialog(). 中调用::EnumChildWindows(). 改变对话窗上的所有控件.

回调函数如下:

// lParam is a pointer to CFont object

BOOL __stdcall SetChildFont(HWND hwnd, LPARAM lparam)

{

  CFont *pFont = (CFont*)lparam

  CWnd *pWnd = CWnd::FromHandle(hwnd)

  pWnd->SetFont(pFont)

  return TRUE

}

 

使用1:

BOOL CAboutDlg::OnInitDialog() 

{

    CDialog::OnInitDialog()

    

    // TODO: Add extra initialization here

  ::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont())

    

    return TRUE  // return TRUE unless you set the focus to a control

                  // EXCEPTION: OCX Property Pages should return FALSE

}

使用2:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

        return -1

    

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

    {

        TRACE0("Failed to create toolbar\n")

        return -1      // fail to create

    }

    if (!m_wndStatusBar.Create(this) ||

        !m_wndStatusBar.SetIndicators(indicators,

          sizeof(indicators)/sizeof(UINT)))

    {

        TRACE0("Failed to create status bar\n")

        return -1      // fail to create

    }

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)

    EnableDocking(CBRS_ALIGN_ANY)

    DockControlBar(&m_wndToolBar)

  ::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont())

    return 0

}

我用的VC++2005,给你参考参考:

1,新建工程“MFC Application”,取名例如“Add”

2,按“next”

3,Application type下面选择“Dialog based”(基于对话框),按“finish”

4,展开喊春左侧的目录,打开Add.rc下的IDD_ADD_DIALOG对话框

5,打开“toolbox”工具栏,点edit control,在对话框上面建三个edit control;再点一个button,在对话框上建一个按钮。各属性保持默认。

6,双击新建的那个按钮,会跳到AddDlg.cpp文件中的一郑明耐个自动新建的函数“void CAddDlg::OnBnClickedButton1()”下,在其中添加代码:

::SetDlgItemInt(m_hWnd,IDC_EDIT3,(::GetDlgItemInt(m_hWnd,IDC_EDIT1,0,0) + ::GetDlgItemInt(m_hWnd,IDC_EDIT2,0,0)),0)

7,你在前两个编辑框中输入槐耐数字,按一下按钮,第三个框中就显示两数的和了。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12416231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存