可讓您將字型選取對話框併入您的應用程式。
語法
class CFontDialog : public CCommonDialog
成員
公用建構函式
| 名稱 | 描述 |
|---|---|
| CFontDialog::CFontDialog | 建構 CFontDialog 物件。 |
公用方法
| 名稱 | 描述 |
|---|---|
| CFontDialog::D oModal | 顯示對話框,並允許用戶進行選取。 |
| CFontDialog::GetCharFormat | 擷取所選字型的字元格式設定。 |
| CFontDialog::GetColor | 傳回所選字型的色彩。 |
| CFontDialog::GetCurrentFont | 將目前選取字型的特性指派給 LOGFONT 結構。 |
| CFontDialog::GetFaceName | 傳回所選字型的臉部名稱。 |
| CFontDialog::GetSize | 傳回所選取字型的點大小。 |
| CFontDialog::GetStyleName | 傳回所選字型的樣式名稱。 |
| CFontDialog::GetWeight | 傳回所選字型的粗細。 |
| CFontDialog::IsBold | 判斷字型是否為粗體。 |
| CFontDialog::IsItalic | 判斷字型是否為斜體。 |
| CFontDialog::IsStrikeOut | 判斷字型是否以刪除線顯示。 |
| CFontDialog::IsUnderline | 判斷字型是否加上底線。 |
公用資料成員
| 名稱 | 描述 |
|---|---|
| CFontDialog::m_cf | 用來自定義 CFontDialog 對象的結構。 |
備註
對像是 CFontDialog 一個對話框,其中包含目前安裝在系統中的字型清單。 使用者可以從清單中選取特定字型,然後這個選取範圍會回報給應用程式。
若要建構 CFontDialog 物件,請使用提供的建構函式或衍生新的子類別,並使用您自己的自定義建構函式。
CFontDialog建構物件之後,您可以使用 m_cf 結構來初始化對話框中控件的值或狀態。 m_cf結構的類型為 CHOOSEFONT。 如需此結構的詳細資訊,請參閱 Windows SDK。
初始化對話框物件的控件之後,請呼叫 DoModal 成員函式以顯示對話框,並允許用戶選取字型。 DoModal 會傳回使用者選取 [確定] 或 [取消] 或 [IDCANCEL] 按鈕。
如果 DoModal 傳回 IDOK,您可以使用其中 CFontDialog一個 成員函式來擷取使用者輸入的資訊。
您可以使用 Windows CommDlgExtendedError 函式來判斷對話框初始化期間是否發生錯誤,並深入了解錯誤。 如需此函式的詳細資訊,請參閱 Windows SDK。
CFontDialog 依賴隨附於 Windows 3.1 版和更新版本的COMMDLG.DLL檔案。
若要自定義對話框,請從 CFontDialog衍生類別、提供自定義對話框範本,以及新增訊息對應來處理擴充控件中的通知訊息。 任何未處理的訊息都應該傳遞至基類。
不需要自定義勾點函式。
如需使用 CFontDialog的詳細資訊,請參閱 通用對話框類別。
繼承階層架構
CFontDialog
需求
標頭: afxdlgs.h
CFontDialog::CFontDialog
建構 CFontDialog 物件。
CFontDialog(
LPLOGFONT lplfInitial = NULL,
DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
CFontDialog(
const CHARFORMAT& charformat,
DWORD dwFlags = CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
參數
plfInitial
LOGFONT 數據結構的指標,可讓您設定某些字型的特性。
charFormat
CHARFORMAT 數據結構的指標,可讓您在豐富的編輯控件中設定某些字型特性。
dwFlags
指定一或數個 choose-font 旗標。 可以使用位元 OR 運算子來合併一或數個預先設定的值。 如果您修改 m_cf.Flag 結構成員,請務必在您的變更中使用位元 OR 運算子,讓預設行為保持不變。 如需這些旗標的詳細資訊,請參閱 Windows SDK 中 CHOOSEFONT 結構的描述。
pdcPrinter
printer-device 內容的指標。 若有提供,此參數會指向要選取字型之印表機的 printer-device 內容。
pParentWnd
字型對話方塊的父系或擁有者視窗的指標。
備註
請注意,建構函式會自動填入 CHOOSEFONT 結構的成員中。 您應該只在想要使用不同於預設值的字型對話方塊時,才變更這些設定。
注意
唯有在沒有 Rich Edit 控制項支援的情況下,此函式的第一版才會存在。
範例
// Show the font dialog with all the default settings.
CFontDialog dlg;
dlg.DoModal();
// Show the font dialog with 12 point "Times New Roman" as the
// selected font.
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
CClientDC dc(this); // expects a CWnd that has already been initialized
lf.lfHeight = -MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72);
_tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Times New Roman"));
CFontDialog fdlg(&lf);
fdlg.DoModal();
CFontDialog::D oModal
呼叫此函式以顯示 Windows 通用字型對話方塊,並允許使用者選擇字型。
virtual INT_PTR DoModal();
傳回值
IDOK 或 IDCANCEL。 如果傳回 IDCANCEL,請呼叫 Windows CommDlgExtendedError 函式來判斷是否發生錯誤。
IDOK 和 IDCANCEL 是常數,指出使用者是否選取 [確定] 或 [取消] 按鈕。
備註
如果您要藉由設定m_cf結構的成員來初始化各種字型對話框控制件,您應該先執行此動作,再呼叫 DoModal,但在建構對話框對象之後。
如果 DoModal 傳回 IDOK,您可以呼叫其他成員函式,將使用者的設定或資訊輸入擷取到對話框中。
範例
請參閱 CFontDialog::CFontDialog 和 CFontDialog::GetColor 的範例。
CFontDialog::GetCharFormat
擷取所選字型的字元格式設定。
void GetCharFormat(CHARFORMAT& cf) const;
參數
cf
CHARFORMAT 結構,其中包含所選取字型字元格式的相關信息。
CFontDialog::GetColor
呼叫此函式以擷取選取的字型色彩。
COLORREF GetColor() const;
傳回值
選取字型的色彩。
範例
// Get the color of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF color = dlg.GetColor();
TRACE(_T("Color of the selected font = %8x\n"), color);
}
CFontDialog::GetCurrentFont
呼叫此函式,將目前選取字型的特性指派給LOGFONT結構的成員。
void GetCurrentFont(LPLOGFONT lplf);
參數
lplf
結構的指標 LOGFONT 。
備註
提供其他 CFontDialog 成員函式來存取目前字型的個別特性。
如果在呼叫 DoModal 期間呼叫此函式,則會傳回當時的目前選取範圍(使用者在對話框中看到或已變更的內容)。 如果在呼叫 之後呼叫 DoModal 此函式(只有在 DoModal 傳回 IDOK 時),它會傳回使用者實際選取的內容。
範例
// Get the characteristics of the currently selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
LOGFONT lf;
dlg.GetCurrentFont(&lf);
TRACE(_T("Face name of the selected font = %s\n"), lf.lfFaceName);
}
CFontDialog::GetFaceName
呼叫此函式以擷取所選字型的臉部名稱。
CString GetFaceName() const;
傳回值
對話框中所選取 CFontDialog 字型的臉部名稱。
範例
// Get the face name of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
CString facename = dlg.GetFaceName();
TRACE(_T("Face name of the selected font = %s\n"), facename);
}
CFontDialog::GetSize
呼叫此函式以擷取選取字型的大小。
int GetSize() const;
傳回值
字型的大小,以點為單位的十分之一。
範例
// Get the size of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
int size = dlg.GetSize();
TRACE(_T("The size of the selected font = %d\n"), size);
}
CFontDialog::GetStyleName
呼叫此函式以擷取所選字型的樣式名稱。
CString GetStyleName() const;
傳回值
字型的樣式名稱。
範例
// Get the style name of the selected font, if any.
CFontDialog dlg;
dlg.m_cf.Flags |= CF_USESTYLE;
if (dlg.DoModal() == IDOK)
{
CString stylename = dlg.GetStyleName();
TRACE(_T("Style name of the selected font = %s\n"), stylename);
}
CFontDialog::GetWeight
呼叫此函式以擷取所選字型的粗細。
int GetWeight() const;
傳回值
所選字型的粗細。
備註
如需字型粗細的詳細資訊,請參閱 CFont::CreateFont。
範例
// Get the weight of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
int weight = dlg.GetWeight();
TRACE(_T("Weight of the selected font = %d\n"), weight);
}
CFontDialog::IsBold
呼叫此函式以判斷選取的字型是否為粗體。
BOOL IsBold() const;
傳回值
如果選取的字型已啟用 Bold 特性,則為非零;否則為 0。
範例
// Is the selected font bold?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL bold = dlg.IsBold();
TRACE(_T("Is the selected font bold? %d\n"), bold);
}
CFontDialog::IsItalic
呼叫此函式以判斷選取的字型是否為斜體。
BOOL IsItalic() const;
傳回值
如果選取的字型已啟用斜體特性,則為非零;否則為 0。
範例
// Is the selected font italic?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL italic = dlg.IsItalic();
TRACE(_T("Is the selected font italic? %d\n"), italic);
}
CFontDialog::IsStrikeOut
呼叫此函式,以判斷選取的字型是否以刪除線顯示。
BOOL IsStrikeOut() const;
傳回值
如果選取的字型已啟用 Strikeout 特性,則為非零;否則為 0。
範例
// Is the selected font displayed with strikeout?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL strikeout = dlg.IsStrikeOut();
TRACE(_T("Is the selected font strikeout? %d\n"), strikeout);
}
CFontDialog::IsUnderline
呼叫此函式,以判斷選取的字型是否加上底線。
BOOL IsUnderline() const;
傳回值
如果選取的字型已啟用底線特性,則為非零;否則為 0。
範例
// Is the selected font underlined?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL underline = dlg.IsUnderline();
TRACE(_T("Is the selected font underlined? %d\n"), underline);
}
CFontDialog::m_cf
結構,其成員會儲存對話物件的特性。
CHOOSEFONT m_cf;
備註
建 CFontDialog 構 物件之後,您可以使用 m_cf 來修改對話框的各個層面,再呼叫 DoModal 成員函式。 如需此結構的詳細資訊,請參閱 Windows SDK 中的 CHOOSEFONT 。
範例
// The code fragment creates a font based on the information
// we got from CFontDialog::m_cf variable.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
// Create the font using the selected font from CFontDialog.
LOGFONT lf;
memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));
CFont font;
VERIFY(font.CreateFontIndirect(&lf));
// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);
// Done with the font. Delete the font object.
font.DeleteObject();
}