CFontDialog Class

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

可讓您將字型選取對話方塊納入應用程式。

class CFontDialog : public CCommonDialog  

公用建構函式

名稱說明
CFontDialog::CFontDialog建構 CFontDialog 物件。

公用方法

名稱說明
CFontDialog::DoModal會顯示對話方塊,可讓使用者進行選擇。
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物件。

ACFontDialog物件是目前安裝在系統中的字型清單對話方塊。 使用者可以從清單中,選取特定的字型,此選項會再回報給應用程式。

若要建構CFontDialog物件,使用提供的建構函式或衍生新的子類別,並使用您自己的自訂建構函式。

一次CFontDialog在建構物件,您可以使用m_cf結構初始化的值或在對話方塊中控制項的狀態。 M_cf結構的型別是CHOOSEFONT。 如需這個結構的詳細資訊,請參閱Windows SDK。

初始化對話方塊物件的控制項之後, 呼叫DoModal成員函式來顯示對話方塊,並允許使用者選取的字型。 DoModal傳回使用者是否已選取 [確定] ( IDOK) 或 [取消] ( IDCANCEL) 按鈕。

如果DoModal傳回IDOK,您可以使用其中一個CFontDialog的成員函式來擷取使用者輸入的資訊。

您可以使用 Windows CommDlgExtendedError函式判斷是否在對話方塊的初始化期間發生錯誤,並了解錯誤的詳細資訊。 如需有關這個函式的詳細資訊,請參閱Windows SDK。

CFontDialog依賴 COMMDLG。隨附於 Windows 3.1 和更新版本的 DLL 檔案。

若要自訂對話方塊中,衍生自CFontDialog、 提供自訂的對話方塊範本,以及加入訊息對應來處理從擴充的控制項通知訊息。 任何未處理的訊息應該傳遞至基底類別。

自訂攔截函式不需要。

如需有關使用CFontDialog,請參閱通用對話方塊類別

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFontDialog

標頭︰ afxdlgs.h

建構 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);  

參數

lplfInitial
指標LOGFONT資料結構,可讓您設定部分字型的特性。

charFormat
指標CHARFORMAT資料結構,可讓您設定部分字型的特性在 rich edit 控制項。

dwFlags
指定一或數個 choose-font 旗標。 可以使用位元 OR 運算子來合併一或數個預先設定的值。 如果您修改 m_cf.Flag 結構成員,請務必在您的變更中使用位元 OR 運算子,讓預設行為保持不變。 如需每個這些旗標的詳細資訊,請參閱描述CHOOSEFONT結構Windows SDK。

pdcPrinter
printer-device 內容的指標。 若有提供,此參數會指向要選取字型之印表機的 printer-device 內容。

pParentWnd
字型對話方塊的父系或擁有者視窗的指標。

備註

請注意,建構函式會自動填入 CHOOSEFONT 結構的成員中。 您應該只在想要使用不同於預設值的字型對話方塊時,才變更這些設定。

System_CAPS_ICON_note.jpg 注意

唯有在沒有 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();

呼叫此函式來顯示 Windows 通用字型對話方塊中,並允許使用者選擇一種字型。

virtual INT_PTR DoModal();

傳回值

IDOKIDCANCEL。 如果IDCANCEL會傳回,呼叫 Windows CommDlgExtendedError函式來判斷是否發生錯誤。

IDOKIDCANCEL都是常數,指出使用者是否已選取 [確定] 或 [取消] 按鈕。

備註

如果您想要設定的成員初始化的各種不同的字型對話方塊控制項m_cf結構,您應該執行這項操作之前,先呼叫DoModal,但在建構對話方塊物件之後。

如果DoModal傳回IDOK,您可以呼叫其他成員函式來擷取設定或使用者的資訊輸入到對話方塊。

範例

請參閱範例CFontDialog::CFontDialogCFontDialog::GetColor

擷取選取的字型的字元格式。

void GetCharFormat(CHARFORMAT& cf) const;  

參數

cf
A CHARFORMAT結構,其中包含選取的字型的字元格式的相關資訊。

呼叫此函式可擷取選取的字型色彩。

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);
   }

呼叫此函式可將目前選取字型的特性指派給成員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);
   }

呼叫此函式可擷取選取的字型的字樣名稱。

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);
   }

呼叫此函式可擷取選取字型的大小。

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);
   }

呼叫此函式可擷取選取字型的樣式名稱。

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);
   }

呼叫此函式可擷取所選字型的粗細。

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);
   }

呼叫此函式可判斷選取的字型是否為粗體。

BOOL IsBold() const;  

傳回值

如果選取的字型已啟用; 粗體特性為非零否則為 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);
   }

呼叫此函式來判斷是否選取的字型為斜體。

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);
   }

呼叫此函式可判斷是否要將選取的字型顯示以刪除線。

BOOL IsStrikeOut() const;  

傳回值

如果選取的字型已啟用; 刪除線特性為非零否則為 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);
   }

呼叫此函式可判斷選取的字型會加上底線。

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);
   }

結構,其成員儲存對話方塊物件的特性。

CHOOSEFONT m_cf;  

備註

在建構之後CFontDialog物件時,您可以使用m_cf修改各方面的對話方塊,然後再呼叫DoModal成員函式。 如需這個結構的詳細資訊,請參閱CHOOSEFONT中Windows SDK。

範例

   // 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();
   }

MFC 範例 HIERSVR
CCommonDialog 類別
階層架構圖表

顯示: