PRB: Assertion While Switching Property Pages in OLE Control (140105)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++, 32-bit Editions 2.0
    • Microsoft Visual C++, 32-bit Editions 2.1
    • Microsoft Visual C++, 32-bit Editions 2.2
    • Microsoft Visual C++, 32-bit Editions 4.0

This article was previously published under Q140105

SYMPTOMS

If you have implemented an OLE control that uses a basic MFC CPropertySheet as a user interface, you may receive the following error when trying to switch pages by clicking the tab:
Assertion Failed
OC30D.DLL: File DlgCore.CPP Line 194

CAUSE

This assertion occurs in _AfxCheckDialogTemplate, when MFC cannot find the dialog template resource for the property page.

RESOLUTION

The solution is to override CPropertyPage::OnSetActive and use AFX_MANAGE_STATE as in the following code:

Sample Code

   /* Compile options needed - none
      Add the following code to each of your CPropertyPage-derived classes.
   */ 
   BOOL CYourPropPage::OnSetActive()
   {
     AFX_MANAGE_STATE(_afxModuleAddrThis);
     return CPropertyPage::OnSetActive();
   }
				
The prototype for OnSetActive must also be added to your CPropertyPage- derived class header file.

REFERENCES

For information on AFX_MANAGE_STATE, please see the following article in the Microsoft Knowledge Base:

127074 How to Use AFX_MANAGE_STATE in an OLE Control


Modification Type:MajorLast Reviewed:10/24/2003
Keywords:kbCtrlCreate kbNoUpdate kbprb kbPropSheet KB140105