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
- Microsoft ActiveX Template Library 2.1, 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
This article was previously published under Q183211
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):
_ASSERTE(pQACont->cbSize >= sizeof(QACONTAINER));
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.
RESOLUTION
The assert is harmless and can be ignored. Or, you can get rid of the
assert by performing the following steps:
- Override IQuickActivate::QuickActivate().
- Copy the contents of CComControlBase::IQuickActivate_QuickActivate()
into your override of IQuickActivate::QuickActivate().
- Comment out the assert.
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