MFC ActiveX 控制項:加入自訂方法
自訂方法與庫存方法不同,因為它們尚未由 實作 COleControl
。 您必須為每個新增至控制項的自訂方法提供實作。
重要
ActiveX 是不應該用於新開發的舊版技術。 如需取代 ActiveX 的新式技術詳細資訊,請參閱 ActiveX 控制項 。
ActiveX 控制項使用者可以隨時呼叫自訂方法,以執行控制項特定的動作。 自訂方法的分派對應專案是表單DISP_FUNCTION。
使用 [新增方法精靈] 新增自訂方法
下列程式示範將自訂方法 PtInCircle 新增至 ActiveX 控制項的基本架構程式碼。 PtInCircle 會判斷傳遞至控制項的座標是否在圓形內部或外部。 這個相同的程式也可以用來新增其他自訂方法。 將自訂方法名稱和其參數取代為 PtInCircle 方法名稱和參數。
注意
此範例會使用 InCircle
來自事件一文的 函式。 如需此函式的詳細資訊,請參閱 MFC ActiveX 控制項:將自訂事件新增至 ActiveX 控制項 一文 。
使用 [新增方法精靈] 新增 PtInCircle 自訂方法
載入控制項的專案。
在 [類別檢視] 中,展開控制項的程式庫節點。
在控制項的介面節點 (程式庫節點的第二個節點) 上按一下滑鼠右鍵,開啟捷徑功能表。
從快捷方式功能表中,按一下 [新增 ],然後按一下 [ 新增方法 ]。
這會開啟 [新增方法精靈]。
在 [ 方法名稱] 方塊中,輸入 PtInCircle 。
在 [ 內部名稱] 方塊中,輸入方法的內部函式名稱或使用預設值(在此案例中為 PtInCircle )。
在 [ 傳回類型 ] 方塊中,按一下 方法傳回類型的VARIANT_BOOL 。
使用 [參數類型 ] 和 [ 參數名稱] 控制項,新增名為 xCoord 的參數(類型 OLE_XPOS_PIXELS )。
使用參數類型和 參數名稱 控制項,新增名為 yCoord 的參數(類型 OLE_YPOS_PIXELS )。
按一下完成。
新增自訂方法的方法精靈變更
當您新增自訂方法時,[新增方法精靈] 會對控制項類別標頭進行一些變更(。H) 和實作 (.CPP) 檔案。 下列這一行會新增至控制項類別標頭中的分派對應宣告(。H) 檔案:
VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
此程式碼會宣告名為 PtInCircle
的分派方法處理常式。 控制項使用者可以使用外部名稱 PtInCircle
呼叫此函式。
下列這一行會新增至 控制項的 。IDL 檔案:
[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
這一行會 PtInCircle
指派方法特定的識別碼、方法在 [新增方法精靈] 方法和屬性清單中的位置。 因為 [新增方法精靈] 是用來新增自訂方法,所以會自動將它的專案新增至專案的 。IDL 檔案。
此外,下列這一行位於 實作中 (.控制項類別的 CPP) 檔案會新增至控制項的分派對應:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
DISP_FUNCTION宏會將 方法 PtInCircle
對應至控制項的處理常式函 PtInCircle
式、將傳回型別宣告為 VARIANT_BOOL ,並宣告要傳遞 PtInCircle
至 的兩個類型 參數VTS_XPOS_PIXELS 和 VTS_YPOSPIXELS 。
最後,[新增方法精靈] 會將存根函 CSampleCtrl::PtInCircle
式新增至控制項實作的底部 (。CPP) 檔案。 若要 PtInCircle
如先前所述運作,必須修改如下:
VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CPoint point(xCoord, yCoord);
return InCircle(point);
}