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

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

?? dataobj.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * DATAOBJ.CPP
 * Data Object Chapter 10
 *
 * Implementation of CDataObject and CImpIDataObject that work
 * in either an EXE or DLL.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "dataobj.h"

extern HINSTANCE   g_hInst;

DWORD              g_dwID=0;

//Names of data sizes
static TCHAR * rgszSize[3]={TEXT("Small"), TEXT("Medium")
    , TEXT("Large")};



/*
 * CDataObject::CDataObject
 * CDataObject::~CDataObject
 *
 * Parameters (Constructor):
 *  pUnkOuter       LPUNKNOWN of controlling unknown, if it exists.
 *  pfnDestroy      PFNDESTROYED to call when object is destroyed.
 *  iSize           UINT specifying the size of the data set to use.
 */

CDataObject::CDataObject(LPUNKNOWN pUnkOuter
    , PFNDESTROYED pfnDestroy, UINT iSize)
    {
    UINT        i;

    m_cRef=0;
    m_pUnkOuter=pUnkOuter;
    m_pfnDestroy=pfnDestroy;
    m_iSize=iSize;

    m_hWndAdvise=NULL;
    m_dwAdvFlags=ADVF_NODATA;

    //NULL any contained interfaces initially.
    m_pImpIDataObject=NULL;
    m_pIDataAdviseHolder=NULL;

    //Initilize the FORMATETCs arrays we use for EnumFormatEtc
    m_cfeGet=CFORMATETCGET;

    SETDefFormatEtc(m_rgfeGet[0], CF_METAFILEPICT, TYMED_MFPICT);
    SETDefFormatEtc(m_rgfeGet[1], CF_BITMAP, TYMED_GDI);
    SETDefFormatEtc(m_rgfeGet[2], CF_TEXT, TYMED_HGLOBAL);

    for (i=0; i < DOSIZE_CSIZES; i++)
        m_rghBmp[i]=NULL;

    return;
    }


CDataObject::~CDataObject(void)
    {
    UINT        i;

    for (i=0; i < DOSIZE_CSIZES; i++)
        {
        if (NULL!=m_rghBmp[i])
            DeleteObject(m_rghBmp[i]);
        }

    ReleaseInterface(m_pIDataAdviseHolder);
    DeleteInterfaceImp(m_pImpIDataObject);

    if (NULL!=m_hWndAdvise)
        DestroyWindow(m_hWndAdvise);

    return;
    }



/*
 * CDataObject::Init
 *
 * Purpose:
 *  Performs any intiailization of a CDataObject that's prone to
 *  failure that we also use internally before exposing the
 *  object outside.
 *
 * Parameters:
 *  None
 *
 * Return Value:
 *  BOOL            TRUE if the function is successful,
 *                  FALSE otherwise.
 */

BOOL CDataObject::Init(void)
    {
    LPUNKNOWN       pIUnknown=this;
    UINT            i;
    TCHAR           szTemp[80];
    UINT            cy;

    if (NULL!=m_pUnkOuter)
        pIUnknown=m_pUnkOuter;

    //Allocate contained interfaces.
    m_pImpIDataObject=new CImpIDataObject(this, pIUnknown);

    if (NULL==m_pImpIDataObject)
        return FALSE;

    for (i=0; i < DOSIZE_CSIZES; i++)
        {
        m_rghBmp[i]=LoadBitmap(g_hInst, MAKEINTRESOURCE(i+IDB_MIN));

        if (NULL==m_rghBmp[i])
            return FALSE;
        }


    /*
     * Register the Advise window class first time through
     * (g_dwID==0)
     */

    if (0L==g_dwID)
        {
        WNDCLASS    wc;

        wc.style          = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc    = AdvisorWndProc;
        wc.cbClsExtra     = 0;
        wc.cbWndExtra     = sizeof(PCDataObject);
        wc.hInstance      = g_hInst;
        wc.hIcon          = LoadIcon(g_hInst
            , MAKEINTRESOURCE(IDR_ADVISORICON));
        wc.hCursor        = NULL;
        wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1);
        wc.lpszMenuName   = MAKEINTRESOURCE(IDR_MENU);
        wc.lpszClassName  = TEXT("Advisor");

        if (!RegisterClass(&wc))
            return FALSE;
        }

    /*
     * Create an advise window with a unique caption:
     * "<size> <module> Advisor #xx" where <size> is Small,
     * Medium, or Large, <module> is EXE or DLL, and xx is
     * counted globally every time a CDataObject is created.
     */

    g_dwID++;
   #ifdef EXEDATAOBJECT
    wsprintf(szTemp, TEXT("%s EXE Advisor #%lu")
        , (LPTSTR)rgszSize[m_iSize], g_dwID);
   #else
    wsprintf(szTemp, TEXT("%s DLL Advisor #%lu")
        , (LPTSTR)rgszSize[m_iSize], g_dwID);
   #endif

    cy=(GetSystemMetrics(SM_CYBORDER)*2)+GetSystemMetrics(SM_CYMENU)
        + GetSystemMetrics(SM_CYCAPTION);

    m_hWndAdvise=CreateWindow(TEXT("Advisor"), szTemp
        , WS_OVERLAPPED | WS_CAPTION | WS_MINIMIZEBOX | WS_BORDER
        | WS_VISIBLE, 400, 35+(g_dwID*(cy+30)), 200, cy
        , HWND_DESKTOP, NULL, g_hInst, this);

    if (NULL==m_hWndAdvise)
        return FALSE;

    return TRUE;
    }





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

STDMETHODIMP CDataObject::QueryInterface(REFIID riid, PPVOID ppv)
    {
    *ppv=NULL;

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

    if (IID_IDataObject==riid)
        *ppv=m_pImpIDataObject;

    if (NULL!=*ppv)
        {
        ((LPUNKNOWN)*ppv)->AddRef();
        return NOERROR;
        }

    return ResultFromScode(E_NOINTERFACE);
    }


STDMETHODIMP_(ULONG) CDataObject::AddRef(void)
    {
    return ++m_cRef;
    }


STDMETHODIMP_(ULONG) CDataObject::Release(void)
    {
    if (0!=--m_cRef)
        return m_cRef;

    if (NULL!=m_pfnDestroy)
        (*m_pfnDestroy)();

    delete this;
    return 0;
    }





/*
 * AdvisorWndProc
 *
 * Purpose:
 *  Standard window class procedure.
 */

LRESULT APIENTRY AdvisorWndProc(HWND hWnd, UINT iMsg
    , WPARAM wParam, LPARAM lParam)
    {
    PCDataObject    pDO;
    DWORD           i;
    DWORD           iAdvise;
    DWORD           dwTime;
    DWORD           dwAvg;
    TCHAR           szTime[128];
    TCHAR           szTitle[80];
    HCURSOR         hCur, hCurT;

    pDO=(PCDataObject)GetWindowLong(hWnd, 0);

    switch (iMsg)
        {
        case WM_NCCREATE:
            pDO=(PCDataObject)(((LPCREATESTRUCT)lParam)
                ->lpCreateParams);
            SetWindowLong(hWnd, 0, (LONG)pDO);
            return (DefWindowProc(hWnd, iMsg, wParam, lParam));

        case WM_CLOSE:
            //Forbid task manager from closing us.
            return 0L;

        case WM_COMMAND:
            if (NULL==pDO->m_pIDataAdviseHolder)
                break;

            //Send IAdviseSink::OnDataChange many times.
            i=(DWORD)(LOWORD(wParam)-IDM_ADVISEITERATIONSMIN+1);
            iAdvise=(i*i)*16;

            hCur=LoadCursor(NULL, MAKEINTRESOURCE(IDC_WAIT));
            hCurT=SetCursor(hCur);
            ShowCursor(TRUE);

            dwTime=GetTickCount();

            i=0;
            while (TRUE)
                {
               #ifdef EXEDATAOBJECT
               #ifndef WIN32
                MSG     msg;

                if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
                    {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);
                    }
                else
               #endif
               #endif
                    {
                    pDO->m_pIDataAdviseHolder->SendOnDataChange
                        (pDO->m_pImpIDataObject, 0, ADVF_NODATA);

                    if (++i >= iAdvise)
                        break;
                    }
                }

            dwTime=GetTickCount()-dwTime;
            dwAvg=dwTime/iAdvise;

            SetCursor(hCurT);
            ShowCursor(FALSE);

            wsprintf(szTime
                , TEXT("Total=%lu ms\n\rAverage=%lu ms")
                , dwTime, dwAvg);

            GetWindowText(hWnd, szTitle, sizeof(szTitle));
            MessageBox(hWnd, szTime, szTitle, MB_OK);
            break;

        default:
            return (DefWindowProc(hWnd, iMsg, wParam, lParam));
        }

    return 0L;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区| 欧美精品一区二区三区久久久 | 午夜视频在线观看一区| 欧美电影免费观看完整版| 成人av免费在线播放| 久久国产精品一区二区| 亚洲国产综合色| 国产精品美日韩| 欧美精品一区二区三区蜜桃视频| 欧美性高清videossexo| 成人a免费在线看| 久久国产夜色精品鲁鲁99| 亚洲电影第三页| 亚洲欧洲av在线| 国产偷国产偷精品高清尤物| 欧美一区二区免费| 欧美高清性hdvideosex| 91看片淫黄大片一级在线观看| 韩日欧美一区二区三区| 三级成人在线视频| 一区二区三区四区不卡在线| 国产精品久久久久久久久免费丝袜 | 国产成a人无v码亚洲福利| 日韩精品一二区| 亚洲国产欧美日韩另类综合 | 久久av资源网| 日韩中文字幕1| 亚洲超丰满肉感bbw| 亚洲欧美福利一区二区| 成人欧美一区二区三区黑人麻豆| 国产亚洲午夜高清国产拍精品 | 伊人婷婷欧美激情| 国产精品大尺度| 国产精品成人免费精品自在线观看| 国产亚洲1区2区3区| 精品三级av在线| 欧美成人艳星乳罩| 久久综合色婷婷| 精品国产一二三| 精品免费日韩av| 精品国一区二区三区| 日韩免费视频一区| 精品理论电影在线| 欧美精品一区二区三区高清aⅴ| 日韩一二三区不卡| 亚洲精品一区二区精华| 国产亚洲欧美中文| 国产三级精品在线| 国产精品欧美久久久久无广告 | 国产精品区一区二区三| 中文字幕在线一区| 一区二区在线电影| 亚洲国产精品影院| 日韩国产精品久久| 国产在线精品一区二区| 国产成人免费网站| 91麻豆成人久久精品二区三区| 色婷婷av一区二区三区gif| 欧美日韩在线亚洲一区蜜芽| 欧美美女喷水视频| 欧美精品一区二区高清在线观看| 欧美国产日韩在线观看| 一卡二卡三卡日韩欧美| 日本怡春院一区二区| 国产美女娇喘av呻吟久久| 成人av先锋影音| 欧美日本视频在线| 国产喂奶挤奶一区二区三区| **欧美大码日韩| 午夜不卡av免费| 国产精品91xxx| 91国产福利在线| 亚洲精品在线免费观看视频| 中文字幕一区二区三区av| 亚洲成人av一区二区| 国产一区二区不卡老阿姨| 色婷婷精品大在线视频| 欧美一区二区三区免费视频| 欧美国产综合一区二区| 亚洲国产一区视频| 国产精品456| 欧美日韩免费一区二区三区视频| 2023国产一二三区日本精品2022| 亚洲人成网站色在线观看 | 国产 欧美在线| 欧美色老头old∨ideo| 久久久久久久免费视频了| 亚洲午夜在线电影| 成人免费视频一区二区| 欧美精品一级二级三级| 国产精品久久久久久亚洲毛片 | 欧美激情一区二区在线| 天天操天天干天天综合网| 波多野结衣91| 欧美mv日韩mv国产网站| 亚洲福利电影网| 成人一道本在线| 欧美电影免费观看高清完整版在线观看| 日韩伦理免费电影| 精品亚洲aⅴ乱码一区二区三区| 色综合久久88色综合天天免费| 欧美α欧美αv大片| 亚洲成人福利片| 一本一本大道香蕉久在线精品 | 午夜精品久久久久久不卡8050| 国产丶欧美丶日本不卡视频| 欧美精品乱码久久久久久| 综合激情网...| 国产成人精品免费在线| 欧美一级一区二区| 亚洲午夜免费福利视频| www.日本不卡| 国产欧美一区二区在线观看| 蜜桃久久久久久| 欧美精品久久久久久久多人混战| 亚洲欧美一区二区三区极速播放| 国产精品一二三四区| 精品欧美一区二区三区精品久久| 亚洲福利视频一区| 欧美午夜宅男影院| 亚洲综合精品久久| 97精品视频在线观看自产线路二| 久久精品一区二区三区四区| 美女网站色91| 欧美成人aa大片| 久久精品国产精品亚洲红杏| 4438成人网| 蜜臀a∨国产成人精品| 91精品国产综合久久蜜臀| 亚洲国产日韩精品| 欧美日韩国产在线播放网站| 亚洲成人免费视| 欧美午夜电影网| 亚洲在线中文字幕| 精品婷婷伊人一区三区三| 亚洲一区免费观看| 欧美日韩三级视频| 日本中文字幕一区二区视频 | 欧美视频三区在线播放| 亚洲成人免费av| 欧美一区二区三区在| 久久99精品国产.久久久久久| 日韩欧美成人一区| 国内外成人在线| 国产三级欧美三级| 成人精品视频一区二区三区尤物| 国产三级一区二区| 99在线热播精品免费| 亚洲综合一区二区三区| 欧美巨大另类极品videosbest | 久久精品男人的天堂| 成人激情图片网| 一区二区三区美女视频| 在线91免费看| 精品一区二区日韩| 中文字幕免费不卡| 色先锋资源久久综合| 亚洲成人激情av| 精品欧美一区二区久久| 成人av一区二区三区| 一区二区三区欧美| 日韩三区在线观看| 成人午夜精品在线| 亚洲国产精品麻豆| 久久亚洲综合av| 色一区在线观看| 男女激情视频一区| 国产欧美精品区一区二区三区 | 欧美成人三级在线| 成人av在线播放网址| 香蕉影视欧美成人| 久久久国产午夜精品| 在线精品观看国产| 激情综合亚洲精品| 亚洲视频一二区| 欧美一区二区精品在线| 不卡在线观看av| 日本不卡一二三| 国产精品国产三级国产aⅴ原创| 欧美性猛片aaaaaaa做受| 国产在线精品一区二区不卡了 | 国产成人av影院| 亚洲午夜私人影院| 国产日本一区二区| 欧美私人免费视频| 成人一级视频在线观看| 免费高清不卡av| 成人免费在线播放视频| 欧美一区二区三区色| 91色porny在线视频| 国产一区二区导航在线播放| 亚洲国产乱码最新视频| 国产精品国产三级国产aⅴ原创| 日韩三级视频在线观看| 色狠狠一区二区| 国产成人午夜精品影院观看视频 | 91精品国产91久久久久久最新毛片| 成人综合婷婷国产精品久久免费| 日本在线不卡一区| 一区二区三区四区视频精品免费 |