Microsoft KB Archive/183211

= FIX: Assert in AtlCtl.cpp, Line 121 =

Article ID: 183211

Article Last Modified on 12/8/2003

-

APPLIES TO

 Microsoft ActiveX Template Library 2.0, when used with:  Microsoft Visual C++ 4.2 Enterprise Edition

 Microsoft Visual C++ 4.2 Professional Edition

 Microsoft Visual C++ 5.0 Enterprise Edition

 Microsoft Visual C++ 5.0 Professional Edition</li></ul> </li> Microsoft ActiveX Template Library 2.1, when used with:  Microsoft Visual C++ 4.2 Enterprise Edition</li></ul>

 Microsoft Visual C++ 4.2 Professional Edition</li></ul>

 Microsoft Visual C++ 5.0 Enterprise Edition</li></ul>

 Microsoft Visual C++ 5.0 Professional Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q183211

<div class="symptoms_section">

SYMPTOMS
When you insert a debug version of your ATL control into a control container like Visual Basic, you might get an assert in AtlCtl.cpp, line The assert occurs in the CComControlBase::IQuickActivate_QuickActivate method that checks whether the cbSize member of the QACONTAINER structure is equal to sizeof(QACONTAINER): <pre class="fixed_text">  _ASSERTE(pQACont->cbSize >= sizeof(QACONTAINER));

<div class="cause_section">

CAUSE
The container initializes the QACONTAINER structure and passes it into the control using IQuickActivate::QuickActivate. QACONTAINER is defined in Ocidl.h that comes with both Visual C++ and the Platform SDK. However, the Platform SDK provides a newer version of QACONTAINER that includes two additional interface pointers. Therefore, the QACONTAINER passed in by the container doesn't match the size of the QACONTAINER defined in the newer Ocidl.h.

<div class="resolution_section">

RESOLUTION
The assert is harmless and can be ignored. Or, you can get rid of the assert by performing the following steps:


 * 1) Override IQuickActivate::QuickActivate.
 * 2) Copy the contents of CComControlBase::IQuickActivate_QuickActivate into your override of IQuickActivate::QuickActivate.
 * 3) Comment out the assert.

<div class="status_section">

STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual C++ version 6.0 for Windows.

Additional query words: kbCtrl kbATL200bug kbATL210bug kbVC420 kbVC500 kbvc600fix

Keywords: kbbug kbfix kbvc600fix kbatl300fix kbcontainer kbctrlcreate kbdebug KB183211

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.