这是从网上找到的一个例子,老是显示 “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>

解决方案 »

  1.   

    ReturnValue = uType.AddNumbers(i, j);
      

  2.   

    就是网上常见的那个:
    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;
    }
      

  3.   

    VC里面如下调用:
    #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"); 
    }