コード例 #1
0
ファイル: frame.c プロジェクト: r6144/wine
static HRESULT WINAPI InPlaceFrame_QueryInterface(IOleInPlaceFrame *iface,
                                                  REFIID riid, void **ppv)
{
    DocHost *This = INPLACEFRAME_THIS(iface);

    *ppv = NULL;

    if(IsEqualGUID(&IID_IUnknown, riid)) {
        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
        *ppv = INPLACEFRAME(This);
    }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
        TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
        *ppv = INPLACEFRAME(This);
    }else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) {
        TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv);
        *ppv = INPLACEFRAME(This);
    }else if(IsEqualGUID(&IID_IOleInPlaceFrame, riid)) {
        TRACE("(%p)->(IID_IOleInPlaceFrame %p)\n", This, ppv);
        *ppv = INPLACEFRAME(This);
    }

    if(*ppv) {
        IOleInPlaceFrame_AddRef(INPLACEFRAME(This));
        return S_OK;
    }

    WARN("Unsopported interface %s\n", debugstr_guid(riid));
    return E_NOINTERFACE;
}
コード例 #2
0
ファイル: client.c プロジェクト: howard5888/wineT
static HRESULT WINAPI InPlaceSite_GetWindowContext(IOleInPlaceSite *iface,
        IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, LPRECT lprcPosRect,
        LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo)
{
    DocHost *This = INPLACESITE_THIS(iface);

    TRACE("(%p)->(%p %p %p %p %p)\n", This, ppFrame, ppDoc, lprcPosRect,
          lprcClipRect, lpFrameInfo);

    IOleInPlaceFrame_AddRef(INPLACEFRAME(This));
    *ppFrame = INPLACEFRAME(This);
    *ppDoc = NULL;

    GetClientRect(This->hwnd, lprcPosRect);
    memcpy(lprcClipRect, lprcPosRect, sizeof(RECT));

    lpFrameInfo->cb = sizeof(*lpFrameInfo);
    lpFrameInfo->fMDIApp = FALSE;
    lpFrameInfo->hwndFrame = This->frame_hwnd;
    lpFrameInfo->haccel = NULL;
    lpFrameInfo->cAccelEntries = 0; /* FIXME: should be 5 */

    return S_OK;
}