Article: Q142274
Product(s): Microsoft C Compiler
Version(s): winnt:
Operating System(s):
Keyword(s): kbDocView kbMFC KbUIDesign kbVC400bug kbVC410fix kbGrpDSMFCATL kbNoUpdate
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), used with:
- Microsoft Visual C++ 32-bit Edition, version 4.0
-------------------------------------------------------------------------------
SYMPTOMS
========
Focus notifications (EN_SETFOCUS, BN_SETFOCUS, and so on) for controls in a
CFormView are usually handled in the CFormView class. Calling a function that
relies on the window handle of the control (m_hWnd) inside such a handler may
cause an assertion failure in Afxwin2.inl. This happens only if the control is
the first one in the tab order.
CAUSE
=====
The assertion failure occurs because the focus handler for the control is being
called before OnInitialUpdate() is called for the CFormView.
RESOLUTION
==========
To work around this problem, make sure that the m_hWnd member of the control is
not NULL before calling any function that relies on it.
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article. This bug was corrected in Visual C++ 4.1.
Sample Code
-----------
The following illustrates calling SetSel in the for an Edit control.
void CSettestView::OnSetFocusEdit1()
{
if(NULL != m_Edit.m_hWnd)
m_Edit.SetSel( 0,1 );
}
Additional query words: kbVC400bug 4.00 4.10
======================================================================
Keywords : kbDocView kbMFC KbUIDesign kbVC400bug kbVC410fix kbGrpDSMFCATL kbNoUpdate
Technology : kbAudDeveloper kbMFC
Version : winnt:
Issue type : kbbug
Solution Type : kbfix
=============================================================================