將控制項放在網頁上 (ATL 教學課程,第 7 部分)
您的控制項現在已完成。 若要查看您的控制項在真實世界中的工作,請將它放在網頁上。 當您定義控制項時,已建立包含控制項的 HTML 檔案。 從 方案總管 開啟 PolyCtl.htm 檔案,您可以在網頁上看到您的控制項。
在此步驟中,您會將功能新增至 控制項,並編寫網頁腳本以回應事件。 您也會修改 控制項,讓 Internet Explorer 知道控制項對腳本而言是安全的。
新增功能
新增控制項功能
開啟 PolyCtl.cpp 並取代下列程式碼:
if (PtInRegion(hRgn, xPos, yPos))
Fire_ClickIn(xPos, yPos);
else
Fire_ClickOut(xPos, yPos);
取代為
short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
Fire_ClickIn(xPos, yPos);
put_Sides(++temp);
}
else
{
Fire_ClickOut(xPos, yPos);
put_Sides(--temp);
}
圖形現在會根據您按一下的位置來新增或移除側邊。
編寫網頁腳本
控制項尚未執行任何動作,因此請變更網頁以回應您傳送的事件。
編寫網頁腳本
開啟 PolyCtl.htm,然後選取 [HTML 檢視]。 將下列幾行新增至 HTML 程式碼。 它們應該在 之後新增,
</OBJECT>
但在 之前</BODY>
。<SCRIPT LANGUAGE="VBScript"> <!-- Sub PolyCtl_ClickIn(x, y) MsgBox("Clicked (" & x & ", " & y & ") - adding side") End Sub Sub PolyCtl_ClickOut(x, y) MsgBox("Clicked (" & x & ", " & y & ") - removing side") End Sub --> </SCRIPT>
儲存 HTM 檔案。
您已新增一些從 控制項取得 Sides 屬性的 VBScript 程式碼。 如果您在控制項內按一下,則會增加一個側邊的數目。 如果您按一下控制項外部,您可以減少一個側邊的數目。
指出控制項是用於腳本的保管庫
您只能在 Internet Explorer 中使用 控制項來檢視網頁。 由於安全性弱點,其他瀏覽器不再支援 ActiveX 控制項。
注意
如果看不到控制項,請知道某些瀏覽器需要設定調整才能執行 ActiveX 控制項。 請參閱瀏覽器的檔,以瞭解如何啟用 ActiveX 控制項。
根據您目前的 Internet Explorer 安全性設定,您可能會收到 [安全性警示] 對話方塊。 它指出控制項對腳本可能不安全,而且可能會造成損害。 例如,如果您有顯示檔案的控制項,但也有一個 Delete
刪除檔案的方法,則如果您剛在頁面上檢視它,就會是安全的。 不過,腳本並不安全,因為有人可以呼叫 Delete
方法。
重要
在本教學課程中,您可以變更 Internet Explorer 中的安全性設定,以執行未標示為安全的 ActiveX 控制項。 在主控台中,按一下 [ 網際網路內容 ],然後按一下 [ 安全性 ] 來變更適當的設定。 當您完成本教學課程時,請將安全性設定變更回其原始狀態。
您可以透過程式設計方式警示 Internet Explorer,它不需要顯示此特定控制項的 [安全性警示] 對話方塊。 您可以使用 介面來執行此動作 IObjectSafety
。 ATL 會在 IObject保管庫tyImpl 類別 中提供這個介面的實作。 若要將 介面新增至控制項,請將 新增 IObjectSafetyImpl
至繼承類別清單,並在 COM 對應中新增專案。
若要將 IObject保管庫tyImpl 新增至控制項
將下列這一行新增至 PolyCtl.h 中繼承類別清單的結尾,並將逗號新增至上一行:
public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
將下列這一行新增至 PolyCtl.h 中的 COM 對應:
COM_INTERFACE_ENTRY(IObjectSafety)
建置和測試控制項
建置 控制項。 建置完成後,再次在瀏覽器檢視中開啟 PolyCtl.htm。 這次,應該直接顯示網頁,而不 顯示 [保管庫ty 警示 ] 對話方塊。 如果您按一下多邊形內部,側邊數目就會增加一個。 按一下多邊形外部以減少側邊數目。
後續步驟
此步驟結束 ATL 教學課程。 如需 ATL 的詳細資訊連結,請參閱 ATL 起始頁面 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應