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

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

?? koala.cpp

?? 英文版的 想要的話可以下載了 為大家服務
?? CPP
字號:
/*
 * KOALA.CPP
 * Koala Object with Custom Marshaling, Chapter 6
 *
 * Implementation of the CKoala object with a custom interface
 * to demonstrate local/remote transparency.
 *
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
 *
 * Kraig Brockschmidt, Microsoft
 * Internet  :  kraigb@microsoft.com
 * Compuserve:  >INTERNET:kraigb@microsoft.com
 */


#include "koala.h"


/*
 * ObjectWndProc
 *
 * Purpose:
 *  Standard window class procedure for each object.
 */

LRESULT APIENTRY ObjectWndProc(HWND hWnd, UINT iMsg
    , WPARAM wParam, LPARAM lParam)
    {
    PCKoala     pKoala;

    pKoala=(PCKoala)GetWindowLong(hWnd, OBJECTWL_STRUCTURE);

    switch (iMsg)
        {
        case WM_NCCREATE:
            pKoala=(PCKoala)(((LPCREATESTRUCT)lParam)->lpCreateParams);
            SetWindowLong(hWnd, OBJECTWL_STRUCTURE, (LONG)pKoala);
            return (DefWindowProc(hWnd, iMsg, wParam, lParam));

        case WM_COMMAND:
            //Dispatch the call to the right object
            return pKoala->HandleCall(LOWORD(wParam), lParam);

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

    return 0L;
    }





/*
 * CKoala::CKoala
 * CKoala::~CKoala
 *
 * Parameters (Constructor):
 *  pfnDestroy      PFNDESTROYED to call when an object
 *                  is destroyed.
 */

CKoala::CKoala(PFNDESTROYED pfnDestroy)
    {
    m_cRef=0;
    m_pfnDestroy=pfnDestroy;

    m_fJustAte=FALSE;
    m_cSleepAfterEat=0;
    return;
    }


CKoala::~CKoala(void)
    {
    if (NULL!=m_hWnd)
        DestroyWindow(m_hWnd);

    return;
    }



/*
 * CKoala::Init
 *
 * Purpose:
 *  Performs any intiailization of a CKoala that's prone to failure
 *  that we also use internally before exposing the object outside.
 *
 * Parameters:
 *  hInst           HINSTANCE of the application.
 *  hWndParent      HWND in which to create our window
 *
 * Return Value:
 *  BOOL            TRUE if the function is successful,
 *                  FALSE otherwise.
 */

BOOL CKoala::Init(HINSTANCE hInst, HWND hWndParent)
    {
    //Create our window that receives marshaling calls
    m_hWnd=CreateWindow(TEXT("KoalaObject"), TEXT("KoalaObject")
        , WS_CHILD, 35, 35, 35, 25, hWndParent, NULL
        , hInst, this);

    if (NULL==m_hWnd)
        return FALSE;

    return TRUE;
    }





/*
 * CKoala::HandleCall
 *
 * Purpose:
 *  Handles messages sent via custom marshaling from the client
 *  side proxy.
 *
 * Parameters:
 *  iMsg            UINT identifying the call made.
 *  lParam          LPARAM with extra information.
 *
 * Return Value:
 *  DWORD           Value to return to the proxy which it uses
 *                  in whatever way it must to return a value to
 *                  the client.
 */

DWORD CKoala::HandleCall(UINT iMsg, LPARAM lParam)
    {
    DWORD       dw;
    short       iRet=0;

    /*
     * You'll notice that all the important server-side
     * implementation of the object exists here instead of
     * separate interface implementations.  Everything
     * else is contained in the client-side proxy, who knows
     * when there's no point at all in calling a function
     * on the server side (such as with some of the IKoala
     * functions that don't do anything.
     */

    switch (iMsg)
        {
        case MSG_RELEASE:          //Last IUnknown::Release
            /*
             * There is only one reference count from
             * IClassFactory::CreateInstance, which the proxy
             * will own.  The proxy sends this message when
             * it detects the last Release from the client.
             * Otherwise it doesn't forward AddRef/Release calls.
             */
            Release();
            break;

        case MSG_EAT:
            m_fJustAte=TRUE;
            break;

        case MSG_SLEEP:            //IAnimal::Sleep
            //Client's in-parameter in LOWORD(lParam)
            iRet=LOWORD(lParam)+m_cSleepAfterEat;
            m_fJustAte=FALSE;     //Probably want to eat again
            break;

        case MSG_PROCREATE:        //IAnimal::Procreate
            dw=GetTickCount()/100;

            iRet=((dw/10)*10==dw) ? 1 : 0;
            break;

        case MSG_SLEEPAFTEREATING: //IKoala::SleepAfterEating
            m_cSleepAfterEat=LOWORD(lParam);
            break;

        default:
            break;
        }

    return iRet;
    }





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

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

    if (IID_IUnknown==riid || IID_IMarshal==riid
        || IID_IAnimal==riid || IID_IKoala==riid)
        *ppv=this;

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

    return ResultFromScode(E_NOINTERFACE);
    }


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


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

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

    delete this;
    return 0;
    }





/*
 * CKoala::GetUnmarshalClass
 *
 * Purpose:
 *  Determines the class of object to be used to create an
 *  uninitalized proxy in the unmarshaling process.
 *
 * Parameters:
 *  riid            REFIID of the interface to be marshaled.
 *  pv              LPVOID to the interface to be marshaled.
 *  dwCtx           DWORD specifying the relation of the processes
 *                  between which the marshaling is occuring, from the
 *                  MSHCTX enumeration.
 *  pvCtx           LPVOID Reserved for future MSHCTX values.
 *  dwFlags         DWORD specifying why marshaling is taking place.
 *  pClsID          LPCLSID in which to store the proxy CLSID.
 */

STDMETHODIMP CKoala::GetUnmarshalClass(REFIID riid
    , LPVOID pv, DWORD dwCtx, LPVOID pvCtx, DWORD dwFlags
    , LPCLSID pClsID)
    {
   #ifdef WIN32
    /*
     * If the context is on a different machine we cannot use
     * our custom marshaling based on SendMessage.
     */
    if (dwCtx & MSHCTX_DIFFERENTMACHINE)
        return ResultFromScode(E_FAIL);
   #endif

    //Same proxy for all interfaces.
    *pClsID=CLSID_KoalaProxy;
    return NOERROR;
    }




/*
 * CKoala::GetMarshalSizeMax
 *
 * Purpose:
 *  Returns the upper memory bound needed to write data into a stream
 *  for IMarshal::MarshalInterface.
 *
 * Parameters:
 *  riid            REFIID of the interface to be marshaled.
 *  pv              LPVOID of the interface to be marshaled.
 *  dwDestCtx       DWORD with the destination context from MSHCTX.
 *  pvDestCtx       LPVOID reserved for future MSHCTX flags.
 *  dwFlags         DWORD specifying why marshaling is taking place.
 *  pdwSize         LPDWORD in which the size is returned.
 */

STDMETHODIMP CKoala::GetMarshalSizeMax(REFIID riid, LPVOID pv
    , DWORD dwDestCtx, LPVOID pvDestCtx, DWORD dwFlags
    , LPDWORD pdwSize)
    {
   #ifdef WIN32
    if (dwDestCtx & MSHCTX_DIFFERENTMACHINE)
        return ResultFromScode(E_FAIL);
   #endif

    *pdwSize=sizeof(KOALAMARSHAL);
    return NOERROR;
    }





/*
 * CKoala::MarshalInterface
 *
 * Purpose:
 *  Stores a marshaling packet in a stream for use by a client-side
 *  proxy.
 *
 * Parameters:
 *  pStm            LPSTREAM into which to marshal the interface.
 *  riid            REFIID of the interface to be marshaled.
 *  pv              LPVOID of the interface to be marshaled.
 *  dwDestCtx       DWORD with the destination context from MSHCTX.
 *  pvDestCtx       LPVOID reserved for future MSHCTX flags.
 *  dwFlags         DWORD specifying why marshaling is taking place.
 */

STDMETHODIMP CKoala::MarshalInterface(LPSTREAM pstm
    , REFIID riid, LPVOID pv, DWORD dwDestCtx, LPVOID pvDestCtx
    , DWORD dwFlags)
    {
    KOALAMARSHAL        km;

   #ifdef WIN32
    if (dwDestCtx & MSHCTX_DIFFERENTMACHINE)
        return ResultFromScode(E_FAIL);
   #endif

    //Proxy only needs to know where to send messages
    km.hWnd=m_hWnd;

    //This is for the client who will call Release when needed
    AddRef();

    //Write the marshaling packet to the stream
    return pstm->Write((void *)&km, sizeof(KOALAMARSHAL), NULL);
    }





/*
 * CKoala::UnmarshalInterface
 *
 * Purpose:
 *  Initializes a newly created proxy the marshaling packet in
 *  the stream created in the server-side implementation of
 *  MarshalInterface.  This is the primary member of this interface
 *  used on the client side proxy.
 *
 * Parameters:
 *  pStm            LPSTREAM to the stream containing marshal
 *                  data.
 *  riid            REFIID of the interface to be marshaled.
 *  pv              LPVOID of the interface to be marshaled.
 */

STDMETHODIMP CKoala::UnmarshalInterface(LPSTREAM pstm
    , REFIID riid, LPVOID *pv)
    {
    //No need to implement on server side
    return ResultFromScode(E_NOTIMPL);
    }






/*
 * CKoala::ReleaseMarshalData
 *
 * Purpose:
 *  Destroy a marshaled data packet, client-side only.
 *
 * Parameters:
 *  pStm            LPSTREAM containing the data to release.
 */

STDMETHODIMP CKoala::ReleaseMarshalData(LPSTREAM pstm)
    {
    //Client-side function
    return ResultFromScode(E_NOTIMPL);
    }






/*
 * CKoala::Disconnect
 *
 * Purpose:
 *  Instructs an object with custom marshaling that it's being
 *  disconnected.
 *
 * Parameters:
 *  dwReserved      DWORD reserved.
 */

STDMETHODIMP CKoala::DisconnectObject(DWORD dwReserved)
    {
    /*
     * This is generated from within CoDisconnectObject, which
     * our server doesn't call itself.  This would give the object
     * a chance to close its connection and cleanup before going
     * away since the proxy will no longer be calling it.
     * This should also be used to block any additional calls
     * made after this point.
     */

    return NOERROR;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本va欧美va精品| 精品亚洲国产成人av制服丝袜| 99久久精品费精品国产一区二区| 成人av第一页| 国产精品三级久久久久三级| 91麻豆精品久久久久蜜臀| 5566中文字幕一区二区电影| 日韩高清国产一区在线| 日韩小视频在线观看专区| 国产一区二区三区最好精华液| 国产午夜精品美女毛片视频| 成人av综合一区| 亚洲嫩草精品久久| 91精品国产欧美日韩| 欧美另类z0zxhd电影| 欧美综合在线视频| 精品国产乱码久久久久久蜜臀| 国产天堂亚洲国产碰碰| 亚洲日本护士毛茸茸| 亚洲综合视频网| 激情文学综合插| 99精品久久久久久| 欧美色精品天天在线观看视频| 欧美午夜寂寞影院| 精品卡一卡二卡三卡四在线| 一区二区三区欧美日| 蜜桃av一区二区三区电影| 成人短视频下载| 欧美日韩国产成人在线免费| 国产精品乱码一区二三区小蝌蚪| 亚洲国产精品天堂| 成人av在线资源网| 亚洲精品在线网站| 亚洲欧美日韩国产手机在线| 国产黄色精品视频| 欧美日韩日本视频| 国产精品丝袜黑色高跟| 国产精品18久久久久| 日韩你懂的在线播放| 日韩专区在线视频| 香蕉久久一区二区不卡无毒影院| 日韩va欧美va亚洲va久久| 色老汉av一区二区三区| 亚洲一区二区在线观看视频| 国产精品久久三区| 成+人+亚洲+综合天堂| 一区二区三区在线播放| 日韩欧美二区三区| 老色鬼精品视频在线观看播放| 国产欧美一区二区在线| 欧美美女一区二区三区| 粉嫩绯色av一区二区在线观看| 日韩一级成人av| 色综合天天综合给合国产| 69堂成人精品免费视频| 国产亚洲精品资源在线26u| 亚洲电影在线播放| 91网站最新网址| 亚洲天堂网中文字| 精品一二线国产| 在线观看日韩高清av| 中文字幕国产精品一区二区| 久久国产精品区| 91精品国产综合久久国产大片| 亚洲色图欧美在线| 成人福利在线看| 中文欧美字幕免费| 成人理论电影网| 最新热久久免费视频| 一本一道综合狠狠老| 亚洲一区二区三区美女| 欧美变态口味重另类| 秋霞电影一区二区| www激情久久| 国产成a人无v码亚洲福利| 国产喂奶挤奶一区二区三区| 国产成人午夜高潮毛片| 欧美国产乱子伦| 在线视频中文字幕一区二区| 天天色天天爱天天射综合| 欧美视频在线一区二区三区 | 欧美不卡一区二区| 美日韩一区二区| 欧美在线观看视频在线| 日韩av网站在线观看| 麻豆精品一区二区综合av| 97精品国产露脸对白| 国产一区二区三区电影在线观看 | 91久久精品网| 成人av电影观看| 成熟亚洲日本毛茸茸凸凹| 成人午夜短视频| 国产成人在线视频网站| 国产盗摄视频一区二区三区| 激情欧美一区二区| 国产成人在线视频播放| 国产精品99久| 欧美欧美欧美欧美首页| 欧美三级视频在线播放| 欧美日韩免费一区二区三区 | 国产精品中文字幕日韩精品| 国产一区二区主播在线| 国产成人综合亚洲91猫咪| 粉嫩久久99精品久久久久久夜| 国产成人精品一区二区三区四区| 高清beeg欧美| 99国产精品国产精品毛片| www.在线成人| 欧美疯狂性受xxxxx喷水图片| 91麻豆精品91久久久久久清纯 | 在线亚洲高清视频| 日本道在线观看一区二区| 8x8x8国产精品| 久久精品一区二区| 国产精品久久一级| 一区二区三区成人| 日本三级亚洲精品| 国产成人av电影| 91成人免费电影| 日韩一级完整毛片| 国产精品免费人成网站| 日韩在线一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 老司机午夜精品| 成人黄色av电影| 欧美乱妇20p| 亚洲国产精品成人综合色在线婷婷| 亚洲精品视频免费看| 六月丁香综合在线视频| 成人一区二区三区在线观看| 不卡视频在线看| 欧美亚洲动漫另类| 99精品视频一区二区| 色屁屁一区二区| 精品精品欲导航| 亚洲高清免费视频| 国产麻豆成人传媒免费观看| 成人综合婷婷国产精品久久免费| 91视视频在线观看入口直接观看www | 天天亚洲美女在线视频| 精品制服美女丁香| 91麻豆视频网站| 精品国精品自拍自在线| 国产亚洲va综合人人澡精品 | 亚洲三级免费电影| 久久99精品久久久久| 91美女蜜桃在线| 欧美精品一区二区蜜臀亚洲| 国产精品免费视频观看| 日韩精品乱码免费| 色屁屁一区二区| 国产色一区二区| 美女视频网站黄色亚洲| 在线观看国产日韩| 中文字幕av一区二区三区高 | 日本久久电影网| 欧美在线观看禁18| 日韩毛片在线免费观看| 精品系列免费在线观看| 欧美一区二区三区在线观看 | 欧美日韩国产小视频| 久久er99精品| 亚洲欧洲精品一区二区三区| 欧美日韩久久不卡| 精品欧美黑人一区二区三区| 色猫猫国产区一区二在线视频| 91国在线观看| 欧美亚洲自拍偷拍| 极品少妇一区二区三区精品视频 | 成人免费一区二区三区在线观看| 日韩中文字幕一区二区三区| 91在线免费播放| 亚洲欧美区自拍先锋| 久久久亚洲精品一区二区三区 | 成人爽a毛片一区二区免费| 国产精品狼人久久影院观看方式| 3751色影院一区二区三区| 国产在线国偷精品免费看| 国产精品国产三级国产aⅴ原创| 欧美视频中文字幕| 国产**成人网毛片九色| 亚洲天堂精品在线观看| 欧美成人精精品一区二区频| 欧美性大战久久久| 亚洲午夜国产一区99re久久| 国产日韩欧美电影| 91天堂素人约啪| 美女视频黄频大全不卡视频在线播放| 日韩一区有码在线| 国产精品毛片久久久久久| 91蝌蚪国产九色| 国产乱理伦片在线观看夜一区| 亚洲色图制服丝袜| √…a在线天堂一区| 欧美变态tickle挠乳网站| 欧美嫩在线观看| 欧美视频在线一区| 91麻豆精品国产91久久久久久| 欧美日韩成人在线| 日韩一区二区在线观看|