MFC ActiveX 控制項: 加入自訂方法
自訂的方法與不同內建方法藉由不已經實作的COleControl。 您必須提供您將加入控制項,每一種自訂方法的實作。
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 方法指派特定的 ID 號碼,加入方法精靈的方法和屬性清單中的方法的位置。 加入方法精靈用來加入自訂方法,因為它的項目已自動加入專案。IDL 檔。
另外下, 面這一行,位於實作 (。CPP) 裡的控制項類別裡的檔案會加入至控制項的分派對應:
DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
DISP_FUNCTION巨集給控制項的處理常式函式,對應的方法 PtInCircle PtInCircle,宣告的傳回型別是 VARIANT_BOOL,並宣告型別的兩個參數 VTS_XPOS_PIXELS 和 VTS_YPOSPIXELS 要傳遞至PtInCircle。
最後,加入方法精靈會將 stub 函式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);
}