Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Метод OnCreate


Метод OnCreate определен в классе CWnd следующим образом.

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

Параметр lpCreateStruct содержит указатель на объект CREATESTRUCT, содержащий характеристики создаваемого окна. Эта структура уже была нами описана ранее.

При нормальной работе OnCreate должен вернуть значение 0, чтобы продолжить создание окна. Если OnCreate возвращает –1, окно будет удалено (уничтожено).

MFC AppWizard переопределяет метод OnCreate в классе CMainFrame. Поэтому для обработки сообщения WM_CREATE будет вызван именно переопределенный метод OnCreate класса CMainFrame.

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

      // Вызываем метод OnCreate базового класса

      if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

             return -1;

      // Создаем панель управления toolbar

      if (!m_wndToolBar.Create(this)

             !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))



      {

             // Ошибка при создании панели управления toolbar

             TRACE0("Failed to create toolbar\n");

             return -1;     

      }

      // Создаем панель состояния status bar

      if (!m_wndStatusBar.Create(this)

             !m_wndStatusBar.SetIndicators(indicators,

               sizeof(indicators)/sizeof(UINT)))

      {

             // Ошибка при создании панели состояния status bar

             TRACE0("Failed to create status bar\n");

             return -1;

      }

      // TODO: вы можете изменить характеристики панели

      // управления, убрав некоторые флаги CBRS_

      m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |

             CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

      // TODO: вы можете запретить перемещение панели управления,

      // если удалите следующие три строки программы

      m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

      EnableDocking(CBRS_ALIGN_ANY);

      DockControlBar(&m_wndToolBar);

      return 0;

}

Основное назначение метода OnCreate заключается в том, что он сначала вызывает метод OnCreate базового класса CFrameWnd, а затем создает и отображает внутри главного окна панель управления toolbar и панель состояния status bar.

Метод OnCreate базового класса CFrameWnd выполняет обработку сообщения WM_CREATE по умолчанию и возвращает нулевое значение если обработка прошла без ошибок.

В случае возникновения ошибок при обработке сообщения в базовом классе возвращается -1. Метод CMainFrame::OnCreate при этом также прерывает дальнейшую обработку и возвращает -1, вызывая удаление окна.



Содержание раздела