Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

PropertyPage laden Guid ist NULL

  Alt 10. Aug 2017, 03:28
Ich versuche eine PropertyPage einer anderen DLL zu laden aber leider ist die caGUID NULL

Vielleicht schaut mal jemand drüber ?
OleCreatePropertyFrame ist aus der MSDN

Code:
IBaseFilter *XySubFilter;
ISpecifyPropertyPages *XySubFilterPropertyPage;
FILTER_INFO *FilterInfo;
CAUUID *caGUID;
Code:
HRESULT Show_XySubFilterPropertyPage()
{
 
    if (!KVideo_GetXySubFilter(&XySubFilter))
    {
        MessageBox(hMain, L"Library for sub title display (xySubFilter.dll) is not loaded.", L"Confirm", MB_OK);
        return 0;
    }
    HRESULT hr = XySubFilter->QueryInterface(IID_ISpecifyPropertyPages, (void **)&XySubFilterPropertyPage);
    if (SUCCEEDED(hr))
    {
        // Den Namen vom Filter und Pointer einlesen

        XySubFilter->QueryFilterInfo(FilterInfo);
        IUnknown* pFilterUnk;
        XySubFilter->QueryInterface(IID_IUnknown, (void **)&pFilterUnk);
       
        XySubFilterPropertyPage->GetPages(caGUID);
        //XySubFilterPropertyPage->Release();
        OleCreatePropertyFrame(
            hMain,                 // Parent window
            0, 0,                  // Reserved
            FilterInfo->achName,   // Caption for the dialog box
            1,                     // Number of objects (just the filter)
            &pFilterUnk,           // Array of object pointers.
            caGUID->cElems,        // Number of property pages
            caGUID->pElems,        // Array of property page CLSIDs
            0,                     // Locale identifier
            0, NULL);              // Reserved

        pFilterUnk->Release();
        FilterInfo->pGraph->Release();
        CoTaskMemFree(caGUID->pElems);
    }
    return 1;
}
oops sorry hat sich erledigt.
Das war falsch.

Code:
CAUUID *caGUID;
FILTER_INFO *FilterInfo;
durften keine pointer sein.

so ist es korrekt falls es mal jemand anderes braucht.
Code:
IBaseFilter *XySubFilter;
ISpecifyPropertyPages *XySubFilterPropertyPage;
FILTER_INFO FilterInfo;
IUnknown *pFilterUnk;
CAUUID caGUID;
Code:
HRESULT Show_XySubFilterPropertyPage()
{
 
    if (!KVideo_GetXySubFilter(&XySubFilter))
    {
        MessageBox(hMain, L"Library for sub title display (xySubFilter.dll) is not loaded.", L"Confirm", MB_OK);
        return 0;
    }
    HRESULT hr = XySubFilter->QueryInterface(IID_ISpecifyPropertyPages, (void **)&XySubFilterPropertyPage);
    if (SUCCEEDED(hr))
    {
        // Den Namen vom Filter und Pointer einlesen

        XySubFilter->QueryFilterInfo(&FilterInfo);
        XySubFilter->QueryInterface(IID_IUnknown, (void **)&pFilterUnk);
       
        XySubFilterPropertyPage->GetPages(&caGUID);
        XySubFilterPropertyPage->Release(); // bin nicht sicher ob man es benötig habe es mal eingebaut.
        OleCreatePropertyFrame(
            hMain,                 // Parent window
            0, 0,                  // Reserved
            FilterInfo.achName,    // Caption for the dialog box
            1,                     // Number of objects (just the filter)
            &pFilterUnk,           // Array of object pointers.
            caGUID.cElems,         // Number of property pages
            caGUID.pElems,         // Array of property page CLSIDs
            0,                     // Locale identifier
            0, NULL);              // Reserved

        pFilterUnk->Release();
        FilterInfo.pGraph->Release();
        CoTaskMemFree(caGUID.pElems);
    }
    return 1;
}
gruss

Geändert von EWeiss (10. Aug 2017 um 03:53 Uhr)
  Mit Zitat antworten Zitat