1. 程式人生 > >VS2013編寫嵌入網頁的ATL控制元件1-新建和配置

VS2013編寫嵌入網頁的ATL控制元件1-新建和配置

前言、廢話和原始碼下載位置

最近做一個專案需要網頁開啟的ATL控制元件作為依託,顯示三維內容。網頁對控制元件可以呼叫函式,並且傳送資訊。控制元件也可以給網頁傳送訊息。
我不懂ATL控制元件,完全初學,弄了很久。寫個blog記錄一下。
原始碼工程下載:
AtlTest1501_V1 打包連結

一、工作環境

  • Windows7 64位 旗艦版
  • VS2013
  • IE 10(有的IE11不可用還需要修改)

二、建立ATL控制元件

  1. “以管理員身份執行”VS2013。由於ATL控制元件需要註冊,VS嚮導生成的專案在編譯後,自動註冊,所以需要用管理員身份,否則編譯會失敗,提示註冊問題。
  2. 通過VS嚮導新建ATL專案。專案名稱定為AtlTest1501.選項如下圖:
    這裡寫圖片描述
    點選完成。
  3. 在專案中新增ATL控制元件。
    右鍵新增類,選擇ATL控制元件。填寫類名稱為“AtlControl”。
    這裡寫圖片描述
    選擇支援“連線點”。
    這裡寫圖片描述
    支援“IObjectSafety”介面。
    這裡寫圖片描述
    新增控制元件基於: “Stactic”。
    這裡寫圖片描述
    支援 “Auto Size”。
    這裡寫圖片描述
    點選完成,新增好了ATL控制元件。
  4. 配置除錯,執行看看。
    專案屬性對話方塊“除錯”中:
    • “命令”輸入:C:\Program Files\Internet Explorer\iexplore.exe
    • “命令引數”輸入:$(ProjectDir)AtlControl.htm
    • “工作目錄”輸入:: (SolutionDir) (Configuration)
      這裡寫圖片描述
      點選確定,編譯執行。
      在IE網頁中,“允許阻止的內容”,看到一個灰白色的ATL控制元件。
  5. 跟蹤除錯。
    • 在CAtlControl類的OnCreate函式中打斷點。
    • 除錯的時候,在除錯選單中,選擇“附加到程序”,重新整理IE網頁,點選“允許阻止的內容”。就可以跟蹤除錯了。
    • 注意:我是64位的機器,由於ATL只有32位的。需要確認登錄檔資訊是否相容32位的IE。展開至 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main,在右側列表中找到 TabProcGrowth 設定為非 0,如果這個數值型態是 DWORD,那可以設定為 1,如果型態是字串,可以設定為 medium。如果沒有這個項,就新建一個。百度一下有很多說這個的。原來在IE7的時候,還可以不用附加到程序直接就可以除錯執行,在IE10中沒有找到。剛剛查了一個
      《如何在Win7/Win8中開啟32位版IE10和IE11》

試一下,可以在網頁中控制元件灰白色的ATL控制元件,且斷點可以打斷。本文內容就完成了。
下一篇寫,網頁呼叫ATL控制元件,ATL控制元件向網頁返回事件。

參考文章

最近查詢過的文章很多。都不太記得了。這裡記錄了一些當時認為有用的。

ATL建立ActiveX控制元件樣例(入門級)

其他:給控制元件加上安全描述 可以去掉IE每次“允許顯示內容”的對話方塊詢問。


http://mochou123456.blog.163.com/blog/static/46057646201152111542393/

DLL+ ActiveX控制元件+WEB頁面呼叫例子

把程式嵌入網頁之ATL編寫ActiveX[標準視窗+接受引數]

  • 用於VS2013;
  • 講解清晰入門用,我這個試用,都懷疑是物超的部落格,看了半天不是。
  • 很清晰有時間看看,實現一下。
  • 第一行是我傳輸函式不能的關鍵。
  • 連結如下:
    http://blog.csdn.net/sidyhe/article/details/12048553