FIX: C2664 Error w/Property Sheet Component Added to CDocument (139301)



The information in this article applies to:

  • Microsoft Visual C++ 4.0
  • Microsoft Visual C++ 4.2
  • Microsoft Visual C++ 4.1

This article was previously published under Q139301

SYMPTOMS

When you insert a modeless property sheet from the Property Sheet component in the Component Gallery into a CDocument-derived class or other non-CWnd derived class, the compiler generates this error:
C2664:'Create' : cannot convert parameter 5 from 'class CDocDerivedClass *const' to 'class CWnd *' (new behavior; please see help).

CAUSE

The modeless property sheet component placed in an application includes a CMiniFrameWnd-derived class that actually contains the modeless property sheet. When using the component, the application calls Create() on the CMiniFrameWnd-derived class. This Create() requires a CWnd* to its parent window as its fifth argument. The code generated for your application passes 'this' to the Create() call. CDocument is not derived from CWnd; therefore, passing the 'this' pointer from the CDocument into the CMiniFrame::Create() function causes the compiler error.

RESOLUTION

Place the property sheet component into a class that is derived from CWnd.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. The problem was corrected in Visual C++ version 5.0.

Modification Type:MajorLast Reviewed:10/17/2003
Keywords:kbBug kbfix kbNoUpdate KbUIDesign kbVC500fix KB139301