如何在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庫存屬性的步驟:
- 打開控件工程, 單擊View菜單的ClassWizard打開ClassWizard;
- 單擊Automation标簽;
- 在Class Name框,選擇你的控件類名;
- 單擊Add Property;
- 在 External name框, 單擊Font;
- 單擊 OK;
- 單擊 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。

接受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。
- 單擊View菜單的ClassWizard打開 ClassWizard;
- 單擊Automation标簽;
- Class Name下拉清單框選擇CLabelCtrl,單擊 Add Property;
- 在External name框中,單擊Caption;
- 單擊OK;
- 單擊OK确認你的選擇并關閉ClassWizard;
我們已經給控件增加了庫存屬性Caption,該屬性用以設定Label控件的文本内容。按上述同樣操作,依次添加庫存屬性BackColor,ForeColor,Font。這3個屬性分别用以設定Label控件的背景色,前景色以及字型的屬性。如圖1-2。
添加顔色屬性頁和字型屬性頁
打開工程的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
圖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。