我在一个dialog里面加了一些控件,我想在创建的时候取得控件的指针,从面对这些控件更改标题字体。 我在OnCreate里面取这些控件的指针,好像不行。我想知道,窗口在创建过程中是发送了什么消息的,从开始到完成的过程的消息。 这是这样写的。
int CFontViewDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1; // TODO:  Add your specialized creation code here
// set font type for the title of the controls
CWnd *pWnd=NULL; pWnd=GetDlgItem(IDC_TYPEFACES);
pWnd->SetFont(&m_mainFont); pWnd=GetDlgItem(IDC_BUTTON);
pWnd->SetFont(&m_mainFont); pWnd=GetDlgItem(IDC_LIST);
pWnd->SetFont(&m_mainFont); pWnd=GetDlgItem(IDC_CHECK);
pWnd->SetFont(&m_mainFont); pWnd=GetDlgItem(IDC_GROUPBOX);
pWnd->SetFont(&m_mainFont); return 0;
}
我记得是在OnCreate里面postmessage好像可以的。因为这以前创建过进度条是那样的。 但如果不那样,我又要在显示出的时候更改字体,要怎样呢? 谢谢。

解决方案 »

  1.   

    在dialog中的OnInitDialog中更改字体...
      

  2.   

    打开无模式对话框的顺序 1.PreSubclassWindow()    重载函数,允许用户首先子分类一个窗口
    2.OnCreate()             消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建
    3.OnSize()               消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化
    4.OnMove()               消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动
    5.OnSetFont()            消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体 MFC应用程序中打开模式对话框的函数调用顺序1.DoModal()             重载函数,重载DoModal()成员函数
    2.PreSubclassWindow()   重载函数,允许首先子分类一个窗口
    3.OnCreate()            消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建
    4.OnSize()              消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化
    5.OnMove()              消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动
    6.OnSetFont()           消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体
    7.OnInitDialog()        消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,
                            或者是创建新控件
    8.OnShowWindow()        消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWindow()函数调用
    9.OnCtlColor()          消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件
                            的颜色
    10. OnChildNotify()     重载函数,作为WM_CTLCOLOR消息的结果发送
      

  3.   

    DIALOG的字体是全局的,可以使创建的控减父窗口为空,应该可以改了
      

  4.   

    I will try later. Thanks
      

  5.   

    MFC下放在OnInitDialog()是没问题的~