Article: Q252297
Product(s): Microsoft C Compiler
Version(s): 6.0
Operating System(s):
Keyword(s): kbActiveX kbATL kbCOMt kbMFC kbPropSheet kbVBp600bug kbDSupport kbGrpDSMFCATL kbArchite
Last Modified: 26-DEC-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Professional Edition for Windows, version 6.0
- Microsoft Visual Basic Standard Edition for Windows, version 6.0
- Microsoft Visual C++, 32-bit Enterprise Edition, version 6.0
- Microsoft Visual C++, 32-bit Professional Edition, version 6.0
- Microsoft Visual C++, 32-bit Learning Edition, version 6.0
-------------------------------------------------------------------------------
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 this to be a bug in the Microsoft products 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.
}
}
REFERENCES
==========
- OleCreatePropertyFrame
- OleCreatePropertyFrameIndirect
- IPropertyPage
- IPropertyPageSite
- ISpecifyPropertyPages
- IPerPropertyBrowsing
Additional query words: custom OleCreatePropertyFrame OleCreatePropertyFrameIndirect IPerPropertyBrowsing
======================================================================
Keywords : kbActiveX kbATL kbCOMt kbMFC kbPropSheet kbVBp600bug kbDSupport kbGrpDSMFCATL kbArchitecture
Technology : kbVCsearch kbVBSearch kbAudDeveloper kbZNotKeyword6 kbZNotKeyword2 kbVB600Search kbVB600 kbVC600 kbVC32bitSearch
Version : :6.0
Issue type : kbbug
Solution Type : kbpending
=============================================================================