FIX: CRichEditView as Second Splitter Pane Causes Crash (173027)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++, 32-bit Editions 4.0
- Microsoft Visual C++, 32-bit Editions 4.0a
- Microsoft Visual C++, 32-bit Editions 4.1
This article was previously published under Q173027 SYMPTOMS
If an MFC program uses a CRichEditDoc and a CRichEditView is not the first
pane of a splitter window, an access violation occurs when you start the
program.
CAUSE
MFC's CRichEditDoc::GetView always assumes the first view of the active
frame window is a CRichEditView. The pointer is returned and used as a
CRichEditView object even though it may not be. The crash occurs when you
use a data member or function specific to CRichEditView.
RESOLUTION
Since GetView is not virtual, it cannot be overriden. When using Visual C++
4.0 or 4.1, make sure that the first pane is a CRichEditView.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug has been corrected in the
Microsoft Foundation Classes version 4.2 and shipped with Visual C++
version 4.2.
MORE INFORMATION
When a CRichEditView is specified during the creation of an MFC program
using AppWizard, a CRichEditDoc derived class is created for the program.
When the rich edit view is initially displayed, the framework calls
CRichEditDoc::SetTitle to update the frame window's title. However,
SetTitle calls GetView, which returns the first view in the view list.
(c) Microsoft Corporation 1997, All Rights Reserved.
Contributions by Adam Kim, Microsoft Corporation
Modification Type: | Major | Last Reviewed: | 12/8/2003 |
---|
Keywords: | kbBug kbDocView kbfix kbVC420fix KB173027 |
---|
|