亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? math.cpp

?? atl development adsfasdfasdf
?? CPP
字號:
//
// Math.cpp
//
//

#include <windows.h>

#include "DualServer.h"
#include "math.h"


//
// Math class implementation
//
// Constructors
Math::Math()
{
   m_dwRef = 0;
}

Math::~Math()
{
    g_dwObjs--;
}


STDMETHODIMP Math::QueryInterface( REFIID riid, void** ppv )
{  
   *ppv = NULL;

   if ( riid == IID_IUnknown  || 
        riid == IID_IDispatch ||
        riid == IID_IMath ) 
      *ppv = this;

   if ( *ppv )
   {
      ( (IUnknown*)*ppv)->AddRef();
      return( S_OK );
   }
   return E_NOINTERFACE;
}

STDMETHODIMP_(ULONG) Math::AddRef()
{
   return ++m_dwRef;
}

STDMETHODIMP_(ULONG) Math::Release()
{
   if ( --m_dwRef )
      return m_dwRef;

   delete this;
   return 0;
}

STDMETHODIMP Math::GetTypeInfoCount( UINT* pctinfo )
{
   *pctinfo = 0;
   return S_OK;
}

STDMETHODIMP Math::GetTypeInfo( UINT itinfo,
                                LCID lcid,
                                ITypeInfo** pptinfo )
{
   // Not implemented
   if ( pptinfo )
      *pptinfo = 0;
   return( E_NOTIMPL );
}

STDMETHODIMP Math::GetIDsOfNames( REFIID riid,
                                  OLECHAR** rgszNames,
                                  UINT cNames,
                                  LCID lcid,
                                  DISPID* rgdispid )
{
   // To make things simple, we only support 1 name at a time
   if ( cNames > 1 )
      return( E_INVALIDARG );

   // Convert the member name to ANSI
   CHAR  szAnsi[128];
   long lLen = WideCharToMultiByte( CP_ACP,
                        0,
                        rgszNames[0],
                        wcslen( rgszNames[0] ),
                        szAnsi,
                        sizeof( szAnsi ),
                        0,
                        0 );
   szAnsi[lLen] = '\0';

   // Compare the member name to see if it's one that we have
   // and return the correct DISPID
   if ( strncmp( "Add", szAnsi, 3 ) == 0 )
      rgdispid[0] = DISPID_ADD;
   else if ( strncmp( "Subtract", szAnsi, 8 ) == 0 )
      rgdispid[0] = DISPID_SUBTRACT;
   else if ( strncmp( "Multiply", szAnsi, 8 ) == 0 )
      rgdispid[0] = DISPID_MULTIPLY;
   else if ( strncmp( "Divide", szAnsi, 6 ) == 0 )
      rgdispid[0] = DISPID_DIVIDE;
   else
      return( DISPID_UNKNOWN );

   return S_OK;
}

STDMETHODIMP Math::Invoke( DISPID dispid,
                           REFIID riid,
                           LCID lcid,
                           WORD wFlags,
                           DISPPARAMS FAR* pDispParams,
                           VARIANT FAR* pvarResult,
                           EXCEPINFO FAR* pExcepInfo,
                           unsigned int FAR* puArgErr )
{
   // All of our methods take two parameters
   if ( !pDispParams ||
         pDispParams->cArgs != 2 )
      return( DISP_E_BADPARAMCOUNT );

   // We don't support named arguments
   if ( pDispParams->cNamedArgs > 0 )
      return( DISP_E_NONAMEDARGS );

   // Break out the parameters and coerce them
   // to the proper type
   HRESULT hr;
   VARIANT varOp1;
   VARIANT varOp2;

   // Coerce the variant into the desired type
   // In this case we would like a long
   VariantInit( &varOp1 );
   hr = VariantChangeType(  &varOp1,
                      &(pDispParams->rgvarg[1]),
                      0,
                      VT_I4 );
   // If we can't get a long return invalidate argument
   if ( FAILED( hr ))
      return( DISP_E_TYPEMISMATCH );

   // Coerce the variant into the desired type
   // In this case we would like a long
   VariantInit( &varOp2 );
   hr = VariantChangeType( &varOp2,
                      &(pDispParams->rgvarg[0]),
                      0,
                      VT_I4 );

   // If we can't get a long return invalidate argument
   if ( FAILED( hr ))
      return( DISP_E_TYPEMISMATCH );

   // Initialize the return value
   // If there isn't one, then just return
   if ( pvarResult )
   {
      VariantInit( pvarResult );
      pvarResult->vt = VT_I4;
   }
   else
      return S_OK;

   switch( dispid )
   {
      case DISPID_ADD:
         pvarResult->lVal = varOp1.lVal + varOp2.lVal;
         return S_OK;

      case DISPID_SUBTRACT:
         pvarResult->lVal = varOp1.lVal - varOp2.lVal;
         return S_OK;

      case DISPID_MULTIPLY:
         pvarResult->lVal = varOp1.lVal * varOp2.lVal;
         return S_OK;

      case DISPID_DIVIDE:
         pvarResult->lVal = varOp1.lVal / varOp2.lVal;
         return S_OK;

      default:
         return( DISP_E_MEMBERNOTFOUND );
   }
}

STDMETHODIMP Math::Add(long lOp1, long lOp2, long * plResult)
{
   *plResult = lOp1 + lOp2;
   return S_OK;
}

STDMETHODIMP Math::Subtract(long lOp1, long lOp2, long * plResult)
{
   *plResult = lOp1 - lOp2;
   return S_OK;
}

STDMETHODIMP Math::Multiply(long lOp1, long lOp2, long * plResult)
{
   *plResult = lOp1 * lOp2;
   return S_OK;
}

STDMETHODIMP Math::Divide(long lOp1, long lOp2, long * plResult)
{
   *plResult = lOp1 / lOp2;
   return S_OK;
}

MathClassFactory::MathClassFactory()
{
    m_dwRef = 0;
}

MathClassFactory::~MathClassFactory()
{
}

STDMETHODIMP MathClassFactory::QueryInterface( REFIID riid, void** ppv )
{
   *ppv = NULL;

   if ( riid == IID_IUnknown || riid == IID_IClassFactory )
      *ppv = this;

   if ( *ppv )
   {
      ( (LPUNKNOWN)*ppv )->AddRef();
      return S_OK;
   }

   return(E_NOINTERFACE);
}

STDMETHODIMP_(ULONG) MathClassFactory::AddRef()
{
    return ++m_dwRef;
}

STDMETHODIMP_(ULONG) MathClassFactory::Release()
{
   if ( --m_dwRef )
      return m_dwRef;
   else
      delete this;

    return 0;
}

STDMETHODIMP MathClassFactory::CreateInstance
( LPUNKNOWN pUnkOuter, REFIID riid, void** ppvObj )
{
    Math* pMath;
    HRESULT     hr;

    *ppvObj = NULL;

    pMath = new Math;

    if ( pMath == NULL )
        return( E_OUTOFMEMORY );

    hr = pMath->QueryInterface( riid, ppvObj );

    if ( FAILED( hr ) )
        delete pMath;
    else
        g_dwObjs++;  // Increment the global object count

    return hr;
}

STDMETHODIMP MathClassFactory::LockServer( BOOL fLock )
{
    if ( fLock )
        g_dwLocks++;
    else
        g_dwLocks--;

    return S_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜视频在线| 曰韩精品一区二区| 日韩一区二区影院| 日韩欧美在线影院| 精品免费日韩av| 精品国产凹凸成av人导航| 精品国产区一区| 欧美国产日产图区| 伊人开心综合网| 日韩电影一二三区| 国内久久婷婷综合| zzijzzij亚洲日本少妇熟睡| 色狠狠桃花综合| 欧美亚洲禁片免费| 欧美一区二区私人影院日本| 日韩一二三区不卡| 久久精品欧美一区二区三区麻豆| 久久噜噜亚洲综合| 国产精品网站在线观看| 综合久久久久久| 天天做天天摸天天爽国产一区| 亚洲韩国一区二区三区| 黄网站免费久久| 色婷婷精品久久二区二区蜜臀av| 一道本成人在线| 欧美成人猛片aaaaaaa| 精品少妇一区二区三区视频免付费| 国产欧美一区二区在线| 国产精品欧美久久久久一区二区| 亚洲午夜一区二区三区| 精品一区二区影视| 91国产福利在线| 久久99精品国产91久久来源| 国产成人高清在线| 欧美日韩视频在线一区二区| 久久色中文字幕| 亚洲一区在线播放| 国产精品小仙女| 欧美女孩性生活视频| 中文字幕在线观看一区| 欧美aaa在线| 成人免费av资源| 91精品婷婷国产综合久久竹菊| 国产午夜久久久久| 免费在线视频一区| 欧美视频一区二区三区在线观看 | 日韩黄色免费电影| 成人黄色在线看| 精品国产伦一区二区三区观看方式 | 欧美剧在线免费观看网站| 中文字幕免费不卡| 亚洲高清视频中文字幕| 成人免费av在线| 国产午夜久久久久| 精品在线一区二区三区| www.亚洲色图.com| 日韩女优av电影| 亚洲精品精品亚洲| 91在线精品秘密一区二区| 欧美激情在线观看视频免费| 日本在线不卡一区| 欧美日韩午夜在线视频| 中文字幕在线视频一区| 国产精品一区二区三区乱码| 欧美午夜精品免费| 国产精品国产a| 成人精品高清在线| 久久亚洲春色中文字幕久久久| 老司机精品视频一区二区三区| 91麻豆精品国产无毒不卡在线观看| 亚洲一区二区在线免费看| 色偷偷久久人人79超碰人人澡| 亚洲视频图片小说| 欧美视频一区二区三区四区| 亚洲免费观看在线视频| 欧美在线观看一二区| 亚洲一区在线视频| 欧美怡红院视频| 五月天久久比比资源色| 欧美日韩国产综合一区二区三区| 亚洲一二三四久久| 欧美在线free| 亚洲一区在线视频观看| 在线精品视频一区二区| 国产精品初高中害羞小美女文| 色综合久久综合网| 亚洲精品高清在线| 欧美美女一区二区在线观看| 婷婷综合五月天| 精品国产一二三区| 国产一区二区三区在线观看免费视频| 欧美一区二区三区四区久久| 亚洲大片免费看| 欧美日韩的一区二区| 中文字幕一区二区在线观看| 欧美性大战久久| 精品影院一区二区久久久| 久久精品欧美一区二区三区不卡| 成人av综合在线| 亚洲h精品动漫在线观看| 日韩视频免费观看高清完整版在线观看 | 日本精品免费观看高清观看| 亚洲高清视频的网址| 日韩西西人体444www| 国产精品一色哟哟哟| 中文字幕不卡的av| 欧美午夜宅男影院| 久久精品国产一区二区三区免费看| 欧美国产1区2区| 56国语精品自产拍在线观看| 国产盗摄女厕一区二区三区| 亚洲制服欧美中文字幕中文字幕| 欧美一区二区三级| 色婷婷久久综合| 国产一二三精品| 亚洲va欧美va国产va天堂影院| 久久午夜国产精品| 欧美猛男男办公室激情| 国产精品一区二区三区网站| 亚洲精品欧美在线| 欧美大度的电影原声| 91小视频在线观看| 丁香天五香天堂综合| 日韩精品福利网| 亚洲欧美日韩国产一区二区三区| 日韩视频永久免费| 99久久99久久久精品齐齐| 精品制服美女丁香| 亚洲高清视频在线| 自拍偷在线精品自拍偷无码专区 | 成人av电影免费观看| 九一久久久久久| 日韩va亚洲va欧美va久久| ㊣最新国产の精品bt伙计久久| 久久精品亚洲精品国产欧美| 精品国产一区二区三区忘忧草| 欧美男生操女生| 欧美性视频一区二区三区| 激情六月婷婷综合| 亚洲国产精品久久久久秋霞影院| 国产日韩欧美精品一区| 欧美精品一区男女天堂| 欧美成人三级电影在线| 欧美日韩的一区二区| 99精品久久久久久| 色乱码一区二区三区88| 色综合中文字幕| 成人高清免费在线播放| 国产精品99久久久久久宅男| 国产一区在线不卡| 国产大陆精品国产| av在线播放不卡| 97久久超碰国产精品电影| 99久久99久久精品免费观看| 成人av电影在线网| 色香蕉成人二区免费| 欧美系列日韩一区| 91麻豆精品国产91久久久使用方法 | 日韩主播视频在线| 日本成人超碰在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 国产视频一区二区在线观看| 日韩欧美在线一区二区三区| 日韩欧美色综合| 久久精品夜夜夜夜久久| 精品国产一区二区三区不卡| 91精品婷婷国产综合久久性色| 欧美日韩大陆一区二区| 欧美疯狂性受xxxxx喷水图片| 欧美一区二区视频在线观看2020| 欧美视频一区二区三区在线观看| 色婷婷国产精品综合在线观看| 精品视频一区三区九区| 精品国精品自拍自在线| 国产欧美一区二区精品秋霞影院| 久久综合久久综合九色| 日本一区二区视频在线| 亚洲乱码日产精品bd| 亚洲观看高清完整版在线观看| 久99久精品视频免费观看| 成人av网站大全| 欧美一区二区三区在线看| 国产精品理论在线观看| 天堂久久一区二区三区| 精品中文av资源站在线观看| 不卡的av在线| 69成人精品免费视频| 国产亚洲一区二区在线观看| 亚洲亚洲人成综合网络| 国产剧情在线观看一区二区 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 偷拍自拍另类欧美| 国产一区二区91| 欧美日韩午夜影院| 精品国产不卡一区二区三区| 亚洲最大色网站| 国产乱码精品1区2区3区| 日韩欧美成人一区二区| 亚洲免费观看高清完整| 国产精品性做久久久久久|