天天看點

如何在ActiveX控件中使用字型1

如何在ActiveX控件中使用字型

時間:2008-02-26 來源:網絡/責編:程式設計入門 作者:韓耀旭 <script src="js1/468.js"></script>

<script src="js1/300.js"></script> <script type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

  字型的使用是ActiveX控件制作過程中不可缺少的部分。本文将深入淺出地介紹在ActiveX控件中制作過程中如何使用字型。本文所提及的ActiveX控件制作是指利用VC++6.0的MFC ActiveX ControlWizard 工具,用其它方法制作 ActiveX 控件本文不作讨論。

  本文專門設定了一些例程,以便您能夠更好地掌握這些内容。這些例程都是完整的ActiveX控件制作源代碼。為了突出重點,本文僅對字型使用相關部分的源代碼作較詳細的介紹,其餘部分的代碼本文不作過多讨論。字型作為一種屬性在ActiveX控件中使用,與其它屬性沒有差別,同樣分為庫存屬性和自定義屬性,本文将分四個部分進行介紹。

  • 第一部分 在控件中使用庫存字型(Stock Font)屬性
  • 第二部分 在控件中使用自定義的字型(Custom Font)屬性
  • 第三部分 使用多種字型
  • 第四部分 優化代碼,合理地使用多種字型

  第一部分 在控件中使用庫存字型(Stock Font)屬性

  使用ClassWizard 添加 Font庫存屬性的步驟:

  1. 打開控件工程, 單擊View菜單的ClassWizard打開ClassWizard;
  2. 單擊Automation标簽;
  3. 在Class Name框,選擇你的控件類名;
  4. 單擊Add Property;
  5. 在 External name框, 單擊Font;
  6. 單擊 OK;
  7. 單擊 OK确認你的選擇并關閉 ClassWizard;

  ClassWizard将在控件類的執行檔案的dispatch映射表中加入下列行:

DISP_STOCKPROP_FONT()

  另外, ClassWizard 在.ODL 檔案中加入下列行:

[id(DISPID_FONT), bindable] IFontDisp* Font;

  例程1:Label.ocx

  下面,我們舉一個具體的執行個體詳細示範如何在控件中添加Font庫存屬性。您可以下載下傳該例程進行編譯生成 .ocx 控件,并測試該控件。

  我們将要制作的控件取名Label.ocx,模仿VB工具箱中的Label控件。該控件增強了VC++工具箱中的Static Text控件的有限的功能,您可以友善地在您的工程中使用。例程的工程名也取名為Label。

  建立Label工程

  打開Visual C++ 6.0,單擊File菜單的New,彈出New對話框。在對話框中選擇MFC ActiveX ControlWizard,并輸入工程名Label,單擊OK按鈕,關閉該對話框并彈出MFC ActiveX ControlWizard-Step 1 of 2對話框。如圖1-1。

如何在ActiveX控件中使用字型1

接受MFC ActiveX ControlWizard-Step 1 of 2對話框所有預設設定,單擊Next按鈕,關閉該視窗同時彈出MFC ActiveX ControlWizard-Step 2 of 2對話框。繼續接受MFC ActiveX ControlWizard-Step 2 of 2對話框所有預設設定,單擊Finish按鈕。

  繼續單擊OK 按鈕,Label工程建立完成,我們将繼續對該工程進行修改。使用ClassWizard 給控件增加庫存屬性Caption,BackColor,ForeColor,Font。

  1. 單擊View菜單的ClassWizard打開 ClassWizard;
  2. 單擊Automation标簽;
  3. Class Name下拉清單框選擇CLabelCtrl,單擊 Add Property;
  4. 在External name框中,單擊Caption;
  5. 單擊OK;
  6. 單擊OK确認你的選擇并關閉ClassWizard;

  我們已經給控件增加了庫存屬性Caption,該屬性用以設定Label控件的文本内容。按上述同樣操作,依次添加庫存屬性BackColor,ForeColor,Font。這3個屬性分别用以設定Label控件的背景色,前景色以及字型的屬性。如圖1-2。

如何在ActiveX控件中使用字型1

添加顔色屬性頁和字型屬性頁

  打開工程的LabelCtl.cpp檔案,将其中的如下代碼進行修改:

BEGIN_PROPPAGEIDS(CLabelCtrl, 1) PROPPAGEID(CLabelPropPage::guid) END_PROPPAGEIDS(CLabelCtrl)

修改後的代碼:

BEGIN_PROPPAGEIDS(CLabelCtrl, 3) // 具體個數由實際情況而定 PROPPAGEID(CLabelPropPage::guid)//系統自帶的屬性頁 PROPPAGEID(CLSID_CColorPropPage) //加入Color屬性頁 PROPPAGEID(CLSID_CFontPropPage) //加入Font屬性頁 END_PROPPAGEIDS(CLabelCtrl)

  修改系統自帶的屬性頁

  打開系統自帶的屬性頁資源IDD_PROPPAGE_LABEL,将靜态文本框IDC_STATIC的内容改為"Caption:",添加一個編輯框(Edit Box)控件,控件ID為IDC_CAPTION。如圖1-3

如何在ActiveX控件中使用字型1

圖1-3

  按下"Ctrl+W"組合鍵打開ClassWizard,選中Member Variables标簽,Class name:下拉清單框選擇CLabelPropPage,Control IDs:選中IDC_CAPTION,單擊Add Variable…按鈕,彈出Add Member Variable對話框。

  在Add Member Variable對話框中,Member variable name:框輸入m_caption,Category選擇Value,Variable type:框選擇CString,Optional property name:框選擇Caption,單擊OK按鈕。如圖1-4。

如何在ActiveX控件中使用字型1