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

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

?? beeper.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
 *  pExcepInfo      EXCEPINFO * to exception information.
 *  puArgErr        UINT * in which to store the index of an
 *                  invalid parameter if DISP_E_TYPEMISMATCH
 *                  is returned.
 *
 * Return Value:
 *  HRESULT         NOERROR or a general error code.
 */

STDMETHODIMP CBeeper::Invoke(DISPID dispID, REFIID riid
    , LCID lcid, unsigned short wFlags, DISPPARAMS *pDispParams
    , VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
    {
    HRESULT     hr;
    ITypeInfo  *pTI;
    LANGID      langID=PRIMARYLANGID(lcid);

    //riid is supposed to be IID_NULL always
    if (IID_NULL!=riid)
        return ResultFromScode(DISP_E_UNKNOWNINTERFACE);

    //Get the ITypeInfo for lcid
    hr=GetTypeInfo(0, lcid, &pTI);

    if (FAILED(hr))
        return hr;

   #ifdef WIN32
    //This saves the language ID for this thread
    TlsSetValue(g_dwTLS, &langID);
   #endif

    //Clear exceptions
    SetErrorInfo(0L, NULL);

    //This is exactly what DispInvoke does--so skip the overhead.
    hr=pTI->Invoke((IBeeper *)this, dispID, wFlags
        , pDispParams, pVarResult, pExcepInfo, puArgErr);

    //Exception handling is done within ITypeInfo::Invoke

    pTI->Release();
    return hr;
    }








//IBeeper interface functions

/*
 * CBeeper::get_Sound
 * CBeeper::put_Sound
 *
 * Purpose:
 *  Functions called from DispInvoke to handle the Sound property.
 *
 * Parameters (Set only):
 *  lSound          long, new sound to save after validation
 *
 * Out Parameters: (Get only):
 *  plSound         long *, the current sound.
 */

STDMETHODIMP CBeeper::get_Sound(long *plSound)
    {
    if (NULL==plSound)
        return ResultFromScode(E_POINTER);

    *plSound=m_lSound;
    return NOERROR;
    }


STDMETHODIMP CBeeper::put_Sound(long lSound)
    {
    if (MB_OK!=lSound && MB_ICONEXCLAMATION!=lSound
        && MB_ICONQUESTION!=lSound && MB_ICONHAND!=lSound
        && MB_ICONASTERISK!=lSound)
        {
        /*
         * Since we cannot return a value to ITypeInfo::Invoke to
         * indicate an exception condition, we'll use our Exception
         * function to raise them through the error info mechanism.
         */
        Exception(EXCEPTION_INVALIDSOUND);
        return ResultFromScode(DISP_E_EXCEPTION);
        }

    m_lSound=lSound;
    return NOERROR;
    }


/*
 * CBeeper::Beep
 *
 * Purpose:
 *  Function called from DispInvoke to invoke the Beep method.
 *
 * Out Parameter:
 *  plSoundPlayed   long *, the sound played.
 */

STDMETHODIMP CBeeper::Beep(long *plSoundPlayed)
    {
    if (NULL==plSoundPlayed)
        return ResultFromScode(E_POINTER);

    *plSoundPlayed=m_lSound;
    MessageBeep((UINT)m_lSound);
    return NOERROR;
    }



/*
 * CBeeper::Exception
 *
 * Purpose:
 *  Raises an exception for Invoke from within ITypeInfo::Invoke
 *  using the CreateErrorInfo API and the ICreateErrorInfo interface.
 *  This is part of CBeeper since CBeeper derives from IDispatch
 *  as well.
 *
 * Parameters:
 *  wException      WORD exception code.
 */

void CBeeper::Exception(WORD wException)
    {
    HRESULT             hr;
    ICreateErrorInfo   *pICreateErr;
    BOOL                fSuccess;
    LPTSTR              psz;
    LPOLESTR            pszHelp;
    UINT                idsSource;
    UINT                idsException;
    DWORD               dwHelpID;
    LANGID              langID=LANG_NEUTRAL;
   #ifdef WIN32
    LANGID             *pLangID;
   #endif

   #ifdef WIN32
    pLangID=(LANGID *)TlsGetValue(g_dwTLS);

    if (NULL!=pLangID)
        langID=*pLangID;
   #endif

    /*
     * Thread-safe exception handling means that we call
     * CreateErrorInfo which gives us an ICreateErrorInfo pointer
     * that we then use to set the error information (basically
     * to set the fields of an EXCEPINFO structure.  We then
     * call SetErrorInfo to attach this error to the current
     * thread.  ITypeInfo::Invoke will look for this when it
     * returns from whatever function was invokes by calling
     * GetErrorInfo.
     */

    //Not much we can do if this fails.
    if (FAILED(CreateErrorInfo(&pICreateErr)))
        return;

    psz=(LPTSTR)malloc(1024*sizeof(TCHAR));

    if (NULL==psz)
        {
        pICreateErr->Release();
        return;
        }

    fSuccess=FALSE;

    switch (wException)
        {
        case EXCEPTION_INVALIDSOUND:
            pICreateErr->SetGUID(IID_IBeeper);

            dwHelpID=HID_SOUND_PROPERTY_LIMITATIONS;

            pszHelp=OLETEXT("beep0000.hlp");
            idsSource=IDS_0_EXCEPTIONSOURCE;
            idsException=IDS_0_EXCEPTIONINVALIDSOUND;

            switch (langID)
                {
                case LANG_GERMAN:
                    idsSource=IDS_7_EXCEPTIONSOURCE;
                    idsException=IDS_7_EXCEPTIONINVALIDSOUND;
                    pszHelp=OLETEXT("beep0007.hlp");
                    break;

                case LANG_ENGLISH:
                case LANG_NEUTRAL:
                default:
                    break;
                }

            fSuccess=TRUE;
            break;

        default:
            break;
        }


    if (fSuccess)
        {
        IErrorInfo *pIErr;

        /*
         * If you have a help file, call the functions
         * ICreateErrorInfo::SetHelpFile and
         * ICreateErrorInfo::SetHelpContext as well.  If you
         * set the help file to NULL the context is ignored.
         */
        pICreateErr->SetHelpFile(pszHelp);
        pICreateErr->SetHelpContext(dwHelpID);

       #ifdef WIN32ANSI
        OLECHAR     szTemp[256];

        LoadString(g_hInst, idsSource, psz, 256);
        MultiByteToWideChar(CP_ACP, 0, psz, -1, szTemp, 256);
        pICreateErr->SetSource(szTemp);

        LoadString(g_hInst, idsException, psz, 256);
        MultiByteToWideChar(CP_ACP, 0, psz, -1, szTemp, 256);
        pICreateErr->SetDescription(szTemp);
       #else
        LoadString(g_hInst, idsSource, psz, 1024);
        pICreateErr->SetSource(psz);

        LoadString(g_hInst, idsException, psz, 1024);
        pICreateErr->SetDescription(psz);
       #endif

        hr=pICreateErr->QueryInterface(IID_IErrorInfo
            , (PPVOID)&pIErr);

        if (SUCCEEDED(hr))
            {
            SetErrorInfo(0L, pIErr);
            pIErr->Release();
            }
        }

    free(psz);

    //SetErrorInfo holds the object's IErrorInfo
    pICreateErr->Release();
    return;
    }






//ISupportErrorInfo interface implementation

/*
 * CImpISupportErrorInfo::CImpISupportErrorInfo
 * CImpISupportErrorInfo::~CImpISupportErrorInfo
 *
 * Parameters (Constructor):
 *  pObj            PCBeeper of the object we're in.
 *  pUnkOuter       LPUNKNOWN to which we delegate.
 */

CImpISupportErrorInfo::CImpISupportErrorInfo(PCBeeper pObj
    , LPUNKNOWN pUnkOuter)
    {
    m_cRef=0;
    m_pObj=pObj;
    m_pUnkOuter=pUnkOuter;
    return;
    }

CImpISupportErrorInfo::~CImpISupportErrorInfo(void)
    {
    return;
    }



/*
 * CImpISupportErrorInfo::QueryInterface
 * CImpISupportErrorInfo::AddRef
 * CImpISupportErrorInfo::Release
 *
 * Purpose:
 *  IUnknown members for CImpISupportErrorInfo object.
 */

STDMETHODIMP CImpISupportErrorInfo::QueryInterface(REFIID riid
    , PPVOID ppv)
    {
    return m_pUnkOuter->QueryInterface(riid, ppv);
    }


STDMETHODIMP_(ULONG) CImpISupportErrorInfo::AddRef(void)
    {
    ++m_cRef;
    return m_pUnkOuter->AddRef();
    }

STDMETHODIMP_(ULONG) CImpISupportErrorInfo::Release(void)
    {
    --m_cRef;
    return m_pUnkOuter->Release();
    }



/*
 * CImpISupportErrorInfo::InterfaceSupportsErrorInfo
 *
 * Purpose:
 *  Informs a caller whether or not a specific interface
 *  supports exceptions through the Set/GetErrorInfo mechanism.
 *
 * Parameters:
 *  riid            REFIID of the interface in question.
 *
 * Return Value:
 *  HRESULT         NOERROR if a call to GetErrorInfo will succeed
 *                  for callers of riid.  S_FALSE if not.
 */

STDMETHODIMP CImpISupportErrorInfo::InterfaceSupportsErrorInfo
    (REFIID riid)
    {
    if (IID_IBeeper==riid)
        return NOERROR;

    return ResultFromScode(S_FALSE);
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片激情小说| 日韩视频一区二区| 狠狠色狠狠色综合系列| 日本午夜精品一区二区三区电影| 中文字幕亚洲欧美在线不卡| 国产欧美日韩精品a在线观看| 国产欧美日韩三区| 亚洲男同1069视频| 美脚の诱脚舐め脚责91| 国产福利一区二区三区视频 | 国产一区二区网址| 国产在线精品国自产拍免费| 国模无码大尺度一区二区三区| 成人av影院在线| 在线一区二区视频| 欧美一卡2卡三卡4卡5免费| 国产日韩欧美一区二区三区综合| 亚洲欧美日韩中文播放| 捆绑紧缚一区二区三区视频| 成人av影院在线| 日韩欧美第一区| 亚洲国产一区二区视频| 精品一区二区三区欧美| 欧美三级中文字| 亚洲欧美日韩国产手机在线| 久久99精品久久久久久 | 国产清纯白嫩初高生在线观看91| 中文字幕在线观看一区二区| 欧美96一区二区免费视频| 国产精品自在在线| 日韩精品在线网站| 亚洲成av人片在线观看| 色综合一区二区| 欧美国产乱子伦| 成人一区二区三区中文字幕| 日韩一区二区视频| 亚洲一区在线观看免费 | 国产精品三级在线观看| 免费欧美高清视频| 日韩情涩欧美日韩视频| 九一久久久久久| 2021国产精品久久精品| 国产高清不卡一区二区| 久久夜色精品国产噜噜av | 欧美日韩精品一二三区| 亚洲自拍偷拍欧美| 欧美日韩亚洲高清一区二区| 中文字幕欧美区| 91在线你懂得| 午夜精品福利久久久| 欧美男生操女生| 蜜臀久久99精品久久久久久9| 精品免费日韩av| 国产精品中文有码| 1区2区3区欧美| 91精品福利在线一区二区三区| 免费成人在线播放| 国产精品久久久久三级| 欧美色图激情小说| 激情六月婷婷久久| 亚洲免费在线看| 久久久综合精品| 欧美精品亚洲二区| av爱爱亚洲一区| 狠狠色狠狠色综合日日91app| 亚洲欧洲成人自拍| 日韩精品专区在线影院重磅| 色呦呦日韩精品| 久久99国产精品麻豆| 欧美精品色综合| 国产乱码精品一区二区三区忘忧草 | 色88888久久久久久影院野外 | 欧美电影免费提供在线观看| 成人免费毛片aaaaa**| 蜜臀精品一区二区三区在线观看 | 亚洲欧洲日韩一区二区三区| 日韩欧美在线一区二区三区| 91久久免费观看| 色偷偷一区二区三区| 国产.欧美.日韩| 国产成人综合亚洲网站| 青青草国产精品97视觉盛宴| 亚洲一区二区三区中文字幕在线| 综合久久国产九一剧情麻豆| 欧美一级高清大全免费观看| 色综合色综合色综合| www.亚洲色图.com| 99久久国产免费看| 91黄色免费看| 欧美中文字幕不卡| 91精品国产丝袜白色高跟鞋| 91精品国产福利在线观看| 欧美一区二区免费| www欧美成人18+| 久久综合狠狠综合| 中文字幕一区二区三区视频| 亚洲一级片在线观看| 亚洲高清一区二区三区| 日本亚洲三级在线| 国产.欧美.日韩| 91国在线观看| 欧美成人国产一区二区| 亚洲色图视频免费播放| 爽好久久久欧美精品| 国产经典欧美精品| 欧美日韩中文字幕精品| 精品1区2区在线观看| 亚洲人成在线播放网站岛国| 亚洲国产成人91porn| 亚洲r级在线视频| 国产黄人亚洲片| 91精品在线一区二区| 亚洲免费大片在线观看| 国产一区二区电影| 日韩一区二区精品葵司在线| 亚洲欧美日本在线| 国产成人午夜99999| 日韩欧美成人午夜| 亚洲一区二区成人在线观看| 成人动漫一区二区| 久久久久国产精品厨房| 国内一区二区视频| 欧美一区二区三区视频免费播放| 亚洲色图20p| 99久久国产综合精品麻豆| 国产欧美一区二区三区鸳鸯浴| 婷婷久久综合九色综合伊人色| 成人激情文学综合网| 日韩一区二区免费视频| 婷婷一区二区三区| 在线播放中文一区| 久久99国产精品久久99果冻传媒| 欧美猛男超大videosgay| 日韩一区欧美二区| 欧美一区二区视频在线观看| 亚洲高清中文字幕| 91麻豆精品国产91久久久 | 欧美精品在线视频| 日韩av电影天堂| 久久精品无码一区二区三区| 国产成人午夜99999| 亚洲美女屁股眼交| 日韩一区二区免费在线电影| 精品一区二区精品| 亚洲三级在线播放| 91精品久久久久久久91蜜桃| 麻豆91小视频| 国产女人水真多18毛片18精品视频 | 欧美一区二区不卡视频| 成人黄色网址在线观看| 亚洲激情自拍视频| 日韩亚洲欧美在线| 97精品久久久午夜一区二区三区| 亚洲一区视频在线| 欧美主播一区二区三区美女| 日韩av电影免费观看高清完整版 | 亚洲三级在线看| 精品成人私密视频| 欧美三级在线播放| 成人免费看片app下载| 激情欧美一区二区三区在线观看| 国产精品短视频| 欧美一卡在线观看| 欧美日韩亚州综合| 欧美亚洲另类激情小说| 成人激情小说网站| 国产盗摄一区二区三区| 久久国产精品99精品国产| 三级欧美韩日大片在线看| 国产精品成人午夜| 国产精品青草久久| 国产拍揄自揄精品视频麻豆| 久久久蜜桃精品| 91蝌蚪porny九色| 国产+成+人+亚洲欧洲自线| 国产精品亚洲人在线观看| 精品无码三级在线观看视频| 美女网站一区二区| 麻豆专区一区二区三区四区五区| 亚洲成av人片一区二区梦乃| 亚洲成av人影院| 美女精品一区二区| 国产精品99久久久久久宅男| 国产成人精品三级麻豆| 丁香六月久久综合狠狠色| 成人午夜大片免费观看| 91国产成人在线| 日韩丝袜情趣美女图片| 日韩精品一区二区三区在线观看| 精品国产污污免费网站入口| 国产午夜亚洲精品不卡| 一二三四社区欧美黄| 免费视频最近日韩| 91蝌蚪porny| 欧美v亚洲v综合ⅴ国产v| 日韩理论片中文av| 美腿丝袜亚洲一区| 99视频精品全部免费在线| 欧美一区二区国产| 亚洲欧美日韩小说|