C++ – How to tell if a MFC Dialog has been created/initialized

cmfcwinapi

I have an OnMove handler in my dialog class, which does some stuff with control objects (i.e a CButton). I'm finding this handler gets called before the dialog OnInitDialog method is called, and hence when I try to call methods on the child controls, I get ASSERTS in debug as the controls don't yet exist… they are created in OnInitDialog.

There's two things I'd like to be able to check:

  1. How do I tell the dialog has been initialized?
  2. How do I check an individual CWnd control object's window has been created?

In both cases I'm looking for class members or method call results that can be used.

Best Answer

  1. Set a flag in OnInitDialog

  2. Use your dialog's m_hWnd:

    if ( ::IsWindow(m_Ctrl.m_hWnd) ) {
        ...
    }
    
Related Topic