Article ID: 193102 - Last Review: August 7, 2007 - Revision: 4.2 FIX: Assert in Appui1.cpp Line 215 in MFC SDI/MDI applicationThis article was previously published under Q193102 On This PageSYMPTOMS
When you try to display a modal window without explicitly specifying a
parent in a command handler of an MFC SDI/MDI application, where the frame
window is destroyed in the command handler before displaying the modal
window, you might get an assertion in CCmdTarget::GetRoutingFrame_()
(Appui1.cpp line: 215) with debug builds.
In the release builds of the application, modal windows may behave similar to modeless windows. This will also be the case if you update an MFC application from Visual C++ 5.0 to Visual C++ 6.0 (both versions of Visual C++ use the MFC DLL named MFC42.dll). CAUSE
Modal windows now use the routing frame data member (m_pRoutingFrame) of
the thread state to decide on the owner in GetSafeOwner(). The problem is
that the CFrameWnd set as the thread state's current routing frame
is deleted, but the thread state is not updated to reflect that fact.
RESOLUTION
Set the thread state's current routing frame to NULL in the destructor of
your CFrameWnd derived class that is being destroyed: STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug has been fixed in the Visual
Studio 6.0 Service Pack 1. To obtain this service pack, please see: http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx
(http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx)
MORE INFORMATION
The MFC frame windows affected by this problem can be of type CFrameWnd,
CMDIFrameWnd, CMDIChildWnd, and COleIPFrameWnd.
The MFC modal windows affected are:
Steps to Reproduce Behavior
"Debug Assertion Failed! File:
Appui1.cpp line: 215".
(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Bret Bentzinger, Microsoft REFERENCES
For more information about Visual Studio service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base:
194022
(http://support.microsoft.com/kb/194022/
)
Visual Studio 6.0 service packs, what, where, why
194295
(http://support.microsoft.com/kb/194295/
)
How to tell that a Visual Studio service pack is installed
193009
(http://support.microsoft.com/kb/193009/
)
INFO: Visual Studio 6.0 Service Pack 1 Readme
| Article Translations
|
Back to the top
