天天看點

有界面的ActiveX 控件,網頁調用

     最近實驗室的一位低年級的同學問我ActiveX 控件的問題,說要編寫一個有界面的ActiveX 控件,放在網頁中,這樣做的目的是利用Internet Web的便捷,替代一般的用戶端.

    在查資料時,發現問類似問題的人很多,但回答的一般都不夠詳細,于是我把我最近弄出來的一點小經驗共享下,望對後來人有所幫助.

    利用MFC向導建立ActiveX控件後,會生成幾個類,其中COleControl (CYouProjectNameCtrl) 的父類是CWnd ,我們就可以在其上建立我們需要的子視窗了. 

    首先建立一個對話框資源,選 IDD_FORMVIEW,為其建立關聯類,基于CDailog,命名為CActXInterface.

            選擇對話框的屬性:

                 英文版VC:style - child,border - dialog frame, visible, control, static edge

                 中文版VC:"樣式"設定為"下層","更多樣式"中選"可見","控件".

    第二步:在CYouProjectNameCtrl頭檔案中添加CActXInterface Dialog 變量:(記得加入頭檔案)

                 CActXInterface ActXInterface;

    第三步:為CYouProjectNameCtrl添加消息WM_CREAT ,對應函數OnCreat();在其中建立對話框

                ActXInterface.Create(IDD_FORMVIEW,this);//IDD_FORMVIEW為資源ID

    第四步:在CYouProjectNameCtrl的OnDraw()消息中顯示你的對話框.

                ActXInterface.MoveWindow(rcBounds,TRUE);

編譯,OK.用VC自帶容器工具測試.Tool-->ActiveX Control Test...

    第五步:注冊控件,VC在編譯時已自動将控件注冊了.要是控件被移動了,要記得重新注冊.

    第六步:編寫HTML檔案:加入如下段.

            <OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C    </OBJECT>

            clsid為控件的注冊id,需要改成該運作環境的注冊id,見VC工程目錄中odl檔案中如下段(該段在檔案最後,别弄錯了id)

            //  Class information for CAxtiveX_InterfaceCtrl

            [ uuid(706B8249-D5F8-438F-B391-FE7D620C946C),

            helpstring("AxtiveX_Interface Control"), control ]

    第七步:按以上步驟做了之後,用IE打開HTML檔案,發現ActiveX控件界面很小,這個可以在容器(HTML檔案)中設定:

            如:

           <OBJECT id=DOcxtest1 classid=clsid:706B8249-D5F8-438F-B391-FE7D620C946C width="532"   height="356">   

            <PARAM NAME="_Version" VALUE="65536">

            <PARAM NAME="_ExtentX" VALUE="2646">

            <PARAM NAME="_ExtentY" VALUE="1323">

            <PARAM NAME="_StockProps" VALUE="0">

            </OBJECT>

 至此,全部ok,你可以友善地在該對話框中建立你想要的控件,如按鈕,Edit等

        原代碼下載下傳