Ejemplo n.º 1
0
static HRESULT STDMETHODCALLTYPE
ITaskBandImpl_SetSite(IN OUT IObjectWithSite *iface,
                      IN IUnknown* pUnkSite)
{
    ITaskBandImpl *This = ITaskBandImpl_from_IObjectWithSite(iface);
    HRESULT hRet = E_FAIL;

    DbgPrint("ITaskBand::SetSite(0x%p)\n", pUnkSite);

    /* Release the current site */
    if (This->punkSite != NULL)
    {
        IUnknown_Release(This->punkSite);
    }

    This->punkSite = NULL;
    This->hWnd = NULL;

    if (pUnkSite != NULL)
    {
        IOleWindow *OleWindow;

        /* Check if the site supports IOleWindow */
        hRet = IUnknown_QueryInterface(pUnkSite,
                                       &IID_IOleWindow,
                                       (PVOID *)&OleWindow);
        if (SUCCEEDED(hRet))
        {
            HWND hWndParent = NULL;

            hRet = IOleWindow_GetWindow(OleWindow,
                                        &hWndParent);
            if (SUCCEEDED(hRet))
            {
                /* Attempt to create the task switch window */

                DbgPrint("CreateTaskSwitchWnd(Parent: 0x%p)\n", hWndParent);
                This->hWnd = CreateTaskSwitchWnd(hWndParent,
                                                 This->Tray);
                if (This->hWnd != NULL)
                {
                    This->punkSite = pUnkSite;
                    hRet = S_OK;
                }
                else
                {
                    DbgPrint("CreateTaskSwitchWnd() failed!\n");
                    IUnknown_Release(OleWindow);
                    hRet = E_FAIL;
                }
            }
            else
                IUnknown_Release(OleWindow);
        }
        else
            DbgPrint("Querying IOleWindow failed: 0x%x\n", hRet);
    }

    return hRet;
}
Ejemplo n.º 2
0
    virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *pUnkSite)
    {
        HRESULT hRet;
        HWND hwndSite;

        TRACE("ITaskBand::SetSite(0x%p)\n", pUnkSite);

        hRet = IUnknown_GetWindow(pUnkSite, &hwndSite);
        if (FAILED(hRet))
        {
            TRACE("Querying site window failed: 0x%x\n", hRet);
            return hRet;
        }

        TRACE("CreateTaskSwitchWnd(Parent: 0x%p)\n", hwndSite);

        HWND hwndTaskSwitch = CreateTaskSwitchWnd(hwndSite, m_Tray);
        if (!hwndTaskSwitch)
        {
            ERR("CreateTaskSwitchWnd failed");
            return E_FAIL;
        }

        m_Site = pUnkSite;
        m_hWnd = hwndTaskSwitch;

        return S_OK;
    }