当前位置: 首页>>代码示例>>C++>>正文


C++ LPDATAOBJECT::QueryInterface方法代码示例

本文整理汇总了C++中LPDATAOBJECT::QueryInterface方法的典型用法代码示例。如果您正苦于以下问题:C++ LPDATAOBJECT::QueryInterface方法的具体用法?C++ LPDATAOBJECT::QueryInterface怎么用?C++ LPDATAOBJECT::QueryInterface使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LPDATAOBJECT的用法示例。


在下文中一共展示了LPDATAOBJECT::QueryInterface方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Initialize

STDMETHODIMP CShellExt::Initialize (LPCITEMIDLIST pidlFolder,
                                    LPDATAOBJECT lpdobj,
                                    HKEY hkeyProgID)
{
    UNREFERENCED_PARAMETER(pidlFolder);
    UNREFERENCED_PARAMETER(hkeyProgID);

    LONG lType = 0;
    HRESULT hr = NOERROR;
    if (!lpdobj)
    {
        return E_INVALIDARG;
    }


    // For singular selections, the WIA namespace should always provide a
    // dataobject that also supports IWiaItem

    if (FAILED(lpdobj->QueryInterface (IID_IWiaItem, reinterpret_cast<LPVOID*>(&m_pItem))))
    {
        // failing that, get the list of selected items from the data object
        UINT uItems = 0;
        LPWSTR szName;
        LPWSTR szToken;

        szName = GetNamesFromDataObject (lpdobj, &uItems);
        // we only support singular objects
        if (uItems != 1)
        {
            hr = E_FAIL;
        }
        else
        {
            // The name is of this format: <device id>::<item name>
            szToken = wcstok (szName, L":");
            if (!szToken)
            {
                hr = E_FAIL;
            }
            // Our extension only supports root items, so make sure there's no item
            // name
            else if (wcstok (NULL, L":"))
            {
                hr = E_FAIL;
            }
            else
            {
                hr = CreateDeviceFromId (szToken, &m_pItem);
            }
        }
        if (szName)
        {
            delete [] szName;
        }
    }
    if (SUCCEEDED(hr))
    {

        m_pItem->GetItemType (&lType);
        if (!(lType & WiaItemTypeRoot))
        {
            hr = E_FAIL; // we only support changing the property on the root item
        }
    }
    return hr;
}
开发者ID:kcrazy,项目名称:winekit,代码行数:66,代码来源:shellext.cpp


注:本文中的LPDATAOBJECT::QueryInterface方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。