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