❶ MFC中怎麼修改對話框標題字體大小(屬性里修改除外)
1VC的對話框字體設置對所有控制項都有效,你不能單獨地改變某個靜態文本的字體。對於你的問題,需要首先用CreateFont來建立一個字體對象,然後調用控制項的SetFont,就可以了。
例子:
1、改靜態文體的ID,如:IDC_STATIC1
2、添加一個Edit控制項,建立一個關聯的控制項m_editControl。
3、在OnInitDialog中添加如下代碼:
CFont*f;
f=newCFont;
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().改變對話窗上的所有控制項.
回調函數如下:
//lParamisapointertoCFontobject
BOOL__stdcallSetChildFont(HWNDhwnd,LPARAMlparam)
{
CFont*pFont=(CFont*)lparam;
CWnd*pWnd=CWnd::FromHandle(hwnd);
pWnd->SetFont(pFont);
returnTRUE;
}
使用1:
BOOLCAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//TODO:Addextrainitializationhere
::EnumChildWindows(m_hWnd,::SetChildFont,(LPARAM)g_Font.GetFont());
returnTRUE;//
//EXCEPTION:
}
使用2:
intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)
{
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("Failedtocreatetoolbar ");
return-1;//failtocreate
}
if(!m_wndStatusBar.Create(this)||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failedtocreatestatusbar ");
return-1;//failtocreate
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
::EnumChildWindows(m_hWnd,::SetChildFont,(LPARAM)g_Font.GetFont());
return0;
}