Microsoft KB Archive/252297

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Article ID: 252297

Article Last Modified on 12/11/2003



APPLIES TO

  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Standard Edition



This article was previously published under Q252297

SYMPTOMS

If you call IPropertyPage::GetPageInfo on any of the stock property pages (CLSID_StockColorPage, CLSID_StockFontPage, or CLSID_StockPicturePage) exported from MsStkPrp.dll, you may receive an unhandled exception.

RESOLUTION

Work around this problem by setting the property page site; call IPropertyPage::SetPageSite, and pass a pointer to an implementation of IPropertyPageSite immediately after using the CoCreate function of the property page object or anytime before you call GetPageInfo.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

You may encounter this problem if you are developing your own custom property frames and fail to site the property page object properly.

Steps to Reproduce Behavior

If you have code similar to the following in your component, you receive the error described in the "Symptoms" section.

    HRESULT hr;
    CAUUID pages;
    CComPtr<IPropertyPage> pPropertyPage;

    CComPtr<ISpecifyPropertyPages> pStockPage;
    hr = this->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pStockPage);

    if (SUCCEEDED(hr))
        hr = pStockPage->GetPages(&pages);

    if (SUCCEEDED(hr))
        hr = ::CoCreateInstance(pages.pElems[0], NULL, CLSCTX_ALL , IID_IPropertyPage, (void **)&pPropertyPage);

    if (SUCCEEDED(hr))
    {
        PROPPAGEINFO pageInfo;
        memset(&pageInfo, 0, sizeof(PROPPAGEINFO));
        pageInfo.cb = sizeof(PROPPAGEINFO);
        
        // Will give unhandled exception here....
        hr = pPropertyPage->GetPageInfo(&pageInfo);
        if (SUCCEEDED(hr))
        {
            // Do something.
        }
    }
                


Additional query words: custom OleCreatePropertyFrame OleCreatePropertyFrameIndirect IPerPropertyBrowsing

Keywords: kbbug kbpropsheet kbarchitecture kbpending KB252297