天天看點

VC6.0制作OCX并web調用 .

1.打開VC6.0,建立工程,選擇:MFC ActiveX ControlWizard,後面步驟預設即可;

2.在ClassView上,可以看到主要有**App\**Ctrl\**ProgPage幾個類,其中接口主要在**Ctrl内實作,可以通過MFC ClassWizard(ctrl+w快捷鍵)的Automation頁建立接口函數;

3.接口函數是對外,是以在參數類型定義上要注意,字元我一般用LPCTSTR,如下面函數:

  void COnOcxCtrl::CallOcx(LPCTSTR devip)

{

 // TODO: Add your dispatch handler code here

 AfxMessageBox(devip);

 ip=devip;

 Refresh();//重繪,調用ondraw()函數;

 return;

}

4.OCX控件界面主要在OnDraw()函數内實作,可以内嵌到IE的,如果是獨立對話框和Console是無法内嵌到IE,如:

CONST char* ip="127.0.1.1";

void COnOcxCtrl::OnDraw(

   CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)

 // TODO: Replace the following code with your own drawing code.

 pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));

 pdc->Ellipse(rcBounds);

 pdc->TextOut(0,0,ip);

5.本案例主要實作:接口方法CallOcx接收一個IP位址,然後更新控件界面的IP顯示;下步應研究如何利用OnDraw()内CDC繪制界面,滿足與使用者的互動;

6.Web調用OCX的代碼:

---------------------------------------------------------------------------------------------------------------------------------

<HTML>

<H1> MFC ActiveX Test Page </H1><p>

You should see your MFC forms or controls embedded in the form below.

<HR><center><P>

<input id="input1" value="CallActiveX" type="button" onclick="CallOcx()">

<br>

<OBJECT id="devread" name="devread" classid="clsid:39F8ACC9-EF99-4B74-9C3C-EE50E5AD56C8" codebase="OnOcx.ocx" style="HEIGHT: 500px;WIDTH:500px"></OBJECT> 

</HTML>

<script   language="JavaScript"   type="text/JavaScript">  

function CallOcx()  

{  

   //--初始化、裝載樣式檔案  

   var   iRes;

   iRes   =   devread.CallOcx("172.30.88.66");

   if(iRes==0)

   {

    alert("失敗!");  

   }

</script>  

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面研究如何封裝成cab來提供給web調用;

繼續閱讀