⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cofeline.cpp

📁 com编程
💻 CPP
字号:
// CoFeline.cpp : Implementation of CoFeline

#include "stdafx.h"
#include <hrx.h>
#include <smartif.h>
#include "MeowMoniker.h"
#include "CoFeline.h"

#define BAD_POINTER_RETURN(p) if( !p ) return E_POINTER
#define BAD_POINTER_RETURN_OR_ZERO(p) if( !p ) return E_POINTER; else *p = 0

/////////////////////////////////////////////////////////////////////////////
// CoFeline

STDMETHODIMP CoFeline::GetDisplayName(
    IDispatch*  pdisp,
    BSTR*       pbstrName)
{
    BAD_POINTER_RETURN_OR_ZERO(pbstrName);
    BAD_POINTER_RETURN(pdisp);

    COM_TRY
    {
        HRX hrx;

        SI(IMoniker)    pmk;
        hrx = CreateMeowMoniker(pdisp,
                                IID_IDispatch,
                                MSHCTX_DIFFERENTMACHINE,
                                MSHLFLAGS_NORMAL,
                                pmk.RelItfRef());

        SI(IBindCtx)    pbc;
        hrx = CreateBindCtx(0, pbc.RelItfRef());

        wchar_t*    pwszDisplayName;
        hrx = pmk->GetDisplayName(pbc.Itf(), 0, &pwszDisplayName);

        *pbstrName = SysAllocString(pwszDisplayName);
        CoTaskMemFree(pwszDisplayName);
        if( !pbstrName ) hrx = E_OUTOFMEMORY;
    }
    COM_CATCH
}

STDMETHODIMP CoFeline::ParseDisplayName(
    BSTR        bstrName,
    IDispatch** ppdisp)
{
    BAD_POINTER_RETURN_OR_ZERO(ppdisp);
    BAD_POINTER_RETURN(bstrName);

    COM_TRY
    {
        HRX hrx;

        SI(IBindCtx)    pbc;
        hrx = CreateBindCtx(0, pbc.RelItfRef());

        SI(IMoniker)    pmk;
        ULONG           cchEaten;
        hrx = MkParseDisplayName(pbc.Itf(),
                                 bstrName,
                                 &cchEaten,
                                 pmk.RelItfRef());
        hrx = pmk->BindToObject(pbc.Itf(),
                                0,
                                IID_IDispatch,
                                (void**)ppdisp);
    }
    COM_CATCH
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -