这是从网上找到的一个例子,老是显示 “0”
<HTML>
<HEAD>
<script language="javascript" type="text/javascript">
function Sum(){
var uType = document.getElementById("CaluNumCtrl");
var ReturnValue = 0;
var i = 5;
var j = 7;
uType.AddNumbers(i, j, ReturnValue);
alert(ReturnValue);
return;
}
</script><TITLE>ATL 3.0 test page for object CaluNumCtrl</TITLE>
</HEAD>
<BODY>
<OBJECT ID="CaluNumCtrl" CLASSID="CLSID:AB202782-BAD9-4698-A461-E511C3134D6D"></OBJECT>
<td align="right"><input id="Sum" type="button" value="Sum" style="width:110px" onclick ="Sum()"/></td>
</BODY>
</HTML>
<HTML>
<HEAD>
<script language="javascript" type="text/javascript">
function Sum(){
var uType = document.getElementById("CaluNumCtrl");
var ReturnValue = 0;
var i = 5;
var j = 7;
uType.AddNumbers(i, j, ReturnValue);
alert(ReturnValue);
return;
}
</script><TITLE>ATL 3.0 test page for object CaluNumCtrl</TITLE>
</HEAD>
<BODY>
<OBJECT ID="CaluNumCtrl" CLASSID="CLSID:AB202782-BAD9-4698-A461-E511C3134D6D"></OBJECT>
<td align="right"><input id="Sum" type="button" value="Sum" style="width:110px" onclick ="Sum()"/></td>
</BODY>
</HTML>
STDMETHODIMP CCaluNumCtrl::AddNumbers(LONG Num1, LONG Num2, LONG *ReturnVal)
{
// TODO: Add your implementation code here
int sum = AddNum(static_cast<int>(Num1),static_cast<int>(Num2));
*ReturnVal = static_cast<LONG>(sum); return S_OK;
}
#include "..\MyAtl\MyAtl.h"
#include "..\MyAtl\MyAtl_i.c"
#include <iostream>
using namespace std;
void main(void)
{
// Declare and HRESULT and a pointer to the Simple_ATL interface
HRESULT hr;
ICaluNumCtrl *IFirstATL = NULL;
// Now we will intilize COM
hr = CoInitialize(0);
// Use the SUCCEDED Macro and see if we can get a pointer to
// the interface
if(SUCCEEDED(hr))
{
hr = CoCreateInstance( CLSID_CaluNumCtrl, NULL, CLSCTX_INPROC_SERVER,
IID_ICaluNumCtrl, (void**) &IFirstATL);
// If we succeeded then call the AddNumbers method, if it failed
// then display an appropriate message to the user.
if(SUCCEEDED(hr))
{
long ReturnValue;
hr = IFirstATL->AddNumbers(5, 7, &ReturnValue);
cout << "The answer for 5 + 7 is: " << ReturnValue << endl;
short num;
IFirstATL->put_iNum(100);
IFirstATL->get_iNum(&num);
cout<<"num is: "<<num<<endl;
hr = IFirstATL->Release();
}
else
{
cout << "CoCreateInstance Failed." << endl;
}
}
// Uninitialize COM
CoUninitialize();
//system("pause");
}