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

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

?? autocli.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
?? 第 1 頁 / 共 2 頁
字號:



/*
 * CApp::NameToID
 *
 * Purpose:
 *  Calls IDispatch::GetIDsOfNames for a single name to determine
 *  the DISPID to pass to IDispatch::Invoke.
 *
 * Parameters:
 *  pszName         OLECHAR * to the name to map.
 *  pDispID         DISPID * in which to store the dispID.
 *
 * Return Value:
 *  HRESULT         Return value of GetIDsOfNames
 */

HRESULT CApp::NameToID(OLECHAR *pszName, DISPID *pDispID)
    {
    HRESULT     hr;
    TCHAR       szMsg[80];

    hr=m_pIDispatch->GetIDsOfNames(IID_NULL, &pszName, 1
        , m_lcid, pDispID);

    if (FAILED(hr))
        {
       #ifdef WIN32ANSI
        char        szTemp[80];

        WideCharToMultiByte(CP_ACP, 0, pszName, -1, szTemp
            , 80, NULL, NULL);
        wsprintf(szMsg
            , TEXT("GetIDsOfNames on '%s' failed with 0x%lX")
            , szTemp, hr);
       #else
        wsprintf(szMsg
            , TEXT("GetIDsOfNames on '%s' failed with 0x%lX")
            , pszName, hr);
       #endif
        Message(szMsg);
        }

    return hr;
    }




/*
 * CApp::Invoke
 *
 * Purpose:
 *  Calls IDispatch::Invoke using the interface pointer we hold
 *  and using some default parameters.  All the other parameters
 *  to this function are passed straight to Invoke
 *
 * Return Value:
 *  HRESULT         Return value of Invoke.  If DISP_E_EXCEPTION,
 *                  this function generates the appropriate
 *                  message box.
 */

HRESULT CApp::Invoke(DISPID dispID, WORD wFlags, DISPPARAMS *pdp
    , VARIANT *pva, EXCEPINFO *pExInfo, UINT *puErr)
    {
    HRESULT     hr;
    LPTSTR      pszMsg=NULL;
    LPTSTR      pszFmt=NULL;
    UINT        uRet;
    UINT        uStyle;
    TCHAR       szSource[80];

    if (NULL==m_pIDispatch)
        return ResultFromScode(E_POINTER);

    hr=m_pIDispatch->Invoke(dispID, IID_NULL, m_lcid, wFlags
        , pdp, pva, pExInfo, puErr);

    if (DISP_E_EXCEPTION!=GetScode(hr))
        return hr;

    //If we're given a deferred filling function, fill now.
    if (NULL!=pExInfo->pfnDeferredFillIn)
        (*pExInfo->pfnDeferredFillIn)(pExInfo);

    /*
     * To handle the exception, display a message box with the
     * controller's name in the caption and a message:
     *
     *      "Error <code> in <source>:  <description>"
     *
     * where <error> is the exception code in pExInfo->wCode or
     * pExInfo->scode, <source> is the value of the ProdID
     * in pExInfo->bstrSource and <description> is in
     * pExInfo->bstrDescription.
     *
     * For simplicity, we assume that if description is set, so is
     * source.
     *
     * To be complete, if pExInfo->bstrHelpFile is non-NULL,
     * display a Help button.  If Help is pressed, launch WinHelp
     * with that filename and pExInfo->dwHelpContext.
     */

    //Go get the real source name from the ProgID
    lstrcpy(szSource, TEXT("Unknown"));

    if (NULL!=pExInfo->bstrSource)
        {
        LONG    lRet;

        //If this doesn't work, we'll have "Unknown" anyway
       #ifdef WIN32ANSI
        char        szTemp[80];
        WideCharToMultiByte(CP_ACP, 0, pExInfo->bstrSource, -1
            , szTemp, 80, NULL, NULL);
        RegQueryValue(HKEY_CLASSES_ROOT, szTemp, szSource, &lRet);
       #else
        RegQueryValue(HKEY_CLASSES_ROOT, pExInfo->bstrSource
            , szSource, &lRet);
       #endif

        SysFreeString(pExInfo->bstrSource);
        }

    if (NULL!=pExInfo->bstrDescription)
        {
        pszFmt=(LPTSTR)malloc(CCHSTRINGMAX*sizeof(TCHAR));

       #ifdef WIN32ANSI
        UINT    cch;
        char   *pszDesc;

        cch=wcslen(pExInfo->bstrDescription)+1;
        pszDesc=(LPSTR)malloc(cch);

        WideCharToMultiByte(CP_ACP, 0, pExInfo->bstrDescription, -1
            , pszDesc, cch, NULL, NULL);

        pszMsg=(LPTSTR)malloc(CCHSTRINGMAX+lstrlen(szSource)+cch);
       #else
        pszMsg=(LPTSTR)malloc((CCHSTRINGMAX+lstrlen(szSource)
            +lstrlen(pExInfo->bstrDescription))*sizeof(TCHAR));
       #endif

        if (0==pExInfo->wCode)
            {
            //Formatting for SCODE errors
            LoadString(m_hInst, IDS_MESSAGEEXCEPTIONSCODE, pszFmt
                , CCHSTRINGMAX);
            wsprintf(pszMsg, pszFmt, (long)pExInfo->scode
                , (LPTSTR)szSource
               #ifdef WIN32ANSI
                , pszDesc);
               #else
                , (LPTSTR)pExInfo->bstrDescription);
               #endif
            }
        else
            {
            //Formatting for wCode errors
            LoadString(m_hInst, IDS_MESSAGEEXCEPTION, pszFmt
                , CCHSTRINGMAX);
            wsprintf(pszMsg, pszFmt, (UINT)pExInfo->wCode
                , (LPTSTR)szSource
               #ifdef WIN32ANSI
                , pszDesc);
               #else
                , (LPTSTR)pExInfo->bstrDescription);
               #endif
            }

        free(pszFmt);
        }
    else
        {
        pszMsg=(LPTSTR)malloc(CCHSTRINGMAX*sizeof(TCHAR));
        LoadString(m_hInst, IDS_MESSAGEUNKNOWNEXCEPTION, pszMsg
            , CCHSTRINGMAX);
        }

    /*
     * In Windows 95 and Windows NT 3.51 there is an MB_HELP style
     * that we use in the exception message if pExInfo->bstrHelpFile
     * is non-NULL.  For Windows NT 3.5 and Windows 3.1x, we'll just use
     * a Cancel button to demonstrate since making a Help button is too
     * much effort for this sample (requires a custom dialog box and code
     * to resize the dialog based on the length of the description
     * string which MessageBox does automatically...)
     */
    uStyle=MB_OK | MB_ICONEXCLAMATION;

   #ifdef MB_HELP
    uStyle |=(NULL!=pExInfo->bstrHelpFile) ? MB_HELP : 0;
   #else
    uStyle |=(NULL!=pExInfo->bstrHelpFile) ? MB_OKCANCEL : 0;
   #endif

    uRet=Message(pszMsg, uStyle);

    if (NULL!=pszMsg)
        free(pszMsg);

   #ifdef MB_HELP
    if (IDHELP==uRet)
   #else
    if (IDCANCEL==uRet)
   #endif
        {
        TCHAR       szHelp[512];

	    /*
         * If we read a HELPDIR, prepend it to the file.  Otherwise
         * just use the string we got since that's all we have.
         */
        if ((TCHAR)0!=m_szHelpDir[0])
            {
		   #ifdef WIN32ANSI
		    char    szTemp[256];

            WideCharToMultiByte(CP_ACP, 0, pExInfo->bstrHelpFile
                , -1, szTemp, 256, NULL, NULL);
            wsprintf(szHelp, TEXT("%s\\%s"), m_szHelpDir, szTemp);
           #else
            wsprintf(szHelp, TEXT("%s\\%s"), m_szHelpDir
                , pExInfo->bstrHelpFile);
		   #endif
            }
        else
           #ifdef WIN32ANSI
            WideCharToMultiByte(CP_ACP, 0, pExInfo->bstrHelpFile
                , -1, szHelp, 512, NULL, NULL);
           #else
            lstrcpy(szHelp, pExInfo->bstrHelpFile);
           #endif

        WinHelp(NULL, szHelp, HELP_CONTEXT, pExInfo->dwHelpContext);
        }

    //We're responsible for cleaning up the strings.
    SysFreeString(pExInfo->bstrDescription);
    SysFreeString(pExInfo->bstrHelpFile);

    return ResultFromScode(DISP_E_EXCEPTION);
    }



/*
 * CApp::Message (overloaded)
 *
 * Purpose:
 *  Scribbles a message onto the client area of the window
 *  or displays the message in a message box if a message
 *  box style is given.
 *
 * Parameters:
 *  pszMsg          LPTSTR to the message string.
 *  uStyle          (message box only) UINT style bits
 *
 * Return Value:
 *  UINT            Return value of MessageBox (MessageBox version
 *                  only)
 */

void CApp::Message(LPTSTR pszMsg)
    {
    HDC     hDC;
    RECT    rc;

    hDC=GetDC(m_hWnd);
    GetClientRect(m_hWnd, &rc);

    SetBkColor(hDC, GetSysColor(COLOR_WINDOW));
    SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));

    /*
     * We'll just be sloppy and clear the whole window as
     * well as write the string with one ExtTextOut call.
     * No word wrapping here...
     */

    ExtTextOut(hDC, 0, 0, ETO_OPAQUE, &rc, pszMsg
        , lstrlen(pszMsg), NULL);

    ReleaseDC(m_hWnd, hDC);
    return;
    }


UINT CApp::Message(LPTSTR pszMsg, UINT uStyle)
    {
    return MessageBox(m_hWnd, pszMsg, TEXT("Automation Client")
        , uStyle);
    }





/*
 * HelpDirFromCLSID
 *
 * Purpose:
 *  Given a CLSID, looks up the TypeLib entry in the registry then
 *  extracts the HELPDIR entry for that type information, storing
 *  the path in pszPath.
 *
 * Parameters:
 *  clsID           CLSID of the object we're looking up.
 *  pszPath         LPTSTR buffer in which to store the directory.
 *
 * Return Value:
 *  None
 */

void HelpDirFromCLSID(CLSID clsID, LPTSTR pszPath)
    {
    TCHAR       szCLSID[80];
    TCHAR       szKey[512];
    UINT        cch;
    long        lRet;

    if (NULL==pszPath)
        return;

    *pszPath=0;

    cch=sizeof(szCLSID)/sizeof(TCHAR);
    StringFromGUID2(clsID, szCLSID, cch);
    wsprintf(szKey, TEXT("CLSID\\%s\\TypeLib"), szCLSID);

    //Get LIBID from under CLSID
    if (ERROR_SUCCESS==RegQueryValue(HKEY_CLASSES_ROOT, szKey
        , szCLSID, &lRet))
        {
        //Get HELPDIR from under TypeLib
        wsprintf(szKey, TEXT("TypeLib\\%s\\HELPDIR"), szCLSID);
        RegQueryValue(HKEY_CLASSES_ROOT, szKey, pszPath, &lRet);
        }

    return;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片国产精品| 91丨九色丨国产丨porny| 一区二区三区精密机械公司| 国产欧美视频在线观看| 亚洲欧美日韩中文播放| 欧美国产在线观看| 国产精品久久久久天堂| 国产精品美女久久久久久久久| 精品盗摄一区二区三区| 日韩亚洲欧美高清| 精品国产亚洲在线| 精品久久久久久久久久久久久久久久久 | 国产精品美女久久久久久2018| 久久久精品综合| 国产亚洲精品aa午夜观看| 日本一区二区三区视频视频| 中文乱码免费一区二区| 国产精品成人在线观看| 一区二区成人在线| 日韩经典一区二区| 国产麻豆视频精品| 国产91在线观看丝袜| 一本到一区二区三区| 欧美日韩精品欧美日韩精品| 欧美一区二区视频观看视频| 欧美一二三四区在线| 日本一区二区视频在线观看| 亚洲免费高清视频在线| 亚洲国产色一区| 麻豆久久久久久久| 波多野结衣在线aⅴ中文字幕不卡| 色综合天天综合| 欧美一区二区在线看| 久久精品欧美一区二区三区不卡 | 欧美成人精品福利| 久久久久久久久久久久电影| 一区视频在线播放| 五月婷婷欧美视频| 国产精品 欧美精品| 日本高清成人免费播放| 中文字幕免费观看一区| 亚洲一区二区三区爽爽爽爽爽| 蜜桃av噜噜一区| 波多野结衣91| 日韩一区二区中文字幕| 国产精品素人视频| 日日夜夜免费精品| 成人v精品蜜桃久久一区| 欧美性大战久久久久久久| 日韩免费看网站| 玉米视频成人免费看| 久久99精品国产.久久久久| 成人一级视频在线观看| 欧美精选午夜久久久乱码6080| 国产婷婷色一区二区三区在线| 亚洲综合成人在线| 高清在线成人网| 欧美喷水一区二区| 国产精品理伦片| 青青草精品视频| 在线精品视频小说1| 26uuu久久综合| 亚洲国产综合人成综合网站| 成人午夜电影小说| 欧美一区中文字幕| 一区二区三区不卡在线观看| 韩国av一区二区三区在线观看| 欧洲在线/亚洲| 国产亚洲成av人在线观看导航| 日本亚洲天堂网| 日本国产一区二区| 欧美激情一区二区三区四区| 视频一区视频二区中文| 一本一本大道香蕉久在线精品| 久久久久久久久久久久电影| 婷婷国产v国产偷v亚洲高清| 在线欧美日韩国产| 综合久久久久久| 国产福利视频一区二区三区| 欧美一级免费大片| 亚洲第一在线综合网站| 97久久超碰国产精品| 337p粉嫩大胆噜噜噜噜噜91av| 日本欧美一区二区三区| 欧美日韩激情在线| 亚洲小少妇裸体bbw| 91在线你懂得| 国产精品激情偷乱一区二区∴| 国产精品一区二区无线| 亚洲精品一区二区三区蜜桃下载| 日韩国产欧美在线视频| 欧美日韩久久不卡| 亚洲bt欧美bt精品| 欧美日韩aaa| 午夜私人影院久久久久| 欧美日韩一区二区电影| 一区二区在线观看免费| 色诱视频网站一区| 一区二区三区在线观看动漫| 91在线porny国产在线看| 中文字幕一区二区三区四区不卡 | 精品国产免费一区二区三区四区 | 曰韩精品一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 国产日本欧美一区二区| 国产99精品国产| 中文字幕高清一区| 成人久久18免费网站麻豆| 中文字幕一区二区三区四区| 91在线播放网址| 亚洲精品中文在线观看| 欧美性猛交xxxxxx富婆| 亚洲高清免费观看| 在线综合视频播放| 精油按摩中文字幕久久| 国产网站一区二区三区| 99久久免费精品| 一二三区精品福利视频| 欧美日韩在线播放三区四区| 天堂成人国产精品一区| 精品国产乱子伦一区| 国产一区二三区| 亚洲欧洲日产国码二区| 在线一区二区三区做爰视频网站| 亚洲va欧美va国产va天堂影院| 日韩欧美一卡二卡| 国产成人综合网站| 亚洲欧美激情小说另类| 欧美喷水一区二区| 国产乱子轮精品视频| 中文字幕日韩欧美一区二区三区| 在线观看91精品国产入口| 免费看日韩精品| 国产精品久久久久久久久晋中| 91官网在线观看| 免费在线一区观看| 中日韩免费视频中文字幕| 欧洲国产伦久久久久久久| 蜜桃视频第一区免费观看| 日本一区二区三区电影| 欧美视频一区在线| 激情久久五月天| 亚洲美女少妇撒尿| 欧美成人一区二区| 91农村精品一区二区在线| 麻豆精品一区二区综合av| 国产精品久久久久婷婷二区次| 欧美男男青年gay1069videost| 国产在线精品一区二区夜色 | 欧洲激情一区二区| 爽好久久久欧美精品| 欧美精品一区二区三区蜜桃视频| av成人免费在线观看| 亚洲高清免费观看 | 日韩一区二区三区三四区视频在线观看 | 综合色天天鬼久久鬼色| 欧美色区777第一页| 国产成人精品影视| 午夜久久久久久电影| 久久影视一区二区| 欧美男女性生活在线直播观看| 国内精品在线播放| 午夜日韩在线电影| 91精品国产一区二区人妖| 91美女在线观看| 国产露脸91国语对白| 亚洲午夜视频在线| 国产精品久久久久久久久快鸭 | 一区二区三区精品在线| 日韩视频免费观看高清完整版在线观看 | 五月天视频一区| 国产日韩欧美高清在线| 日韩视频一区二区三区| 激情综合网最新| 亚洲电影一级片| 亚洲欧美成aⅴ人在线观看 | 中文字幕一区二区三区精华液| 欧美日韩三级一区二区| av男人天堂一区| 九九热在线视频观看这里只有精品| 亚洲午夜羞羞片| 国产精品三级在线观看| 久久久.com| 精品国产a毛片| 欧美日韩国产在线播放网站| 色视频一区二区| 国产毛片精品视频| 精品中文字幕一区二区小辣椒| 亚洲gay无套男同| 亚洲私人黄色宅男| 中文字幕一区二区三区蜜月| 欧美xxxxx裸体时装秀| 69p69国产精品| 欧美性色黄大片手机版| proumb性欧美在线观看| 成人综合在线观看| 激情文学综合网| 久久精品国产秦先生| 亚洲一二三区在线观看| 亚洲天堂免费在线观看视频|