Программирование на языке MFC

Мой второй блог в серии программирования

Вполне очевидно, что этот метод используется для того, чтобы определить класс и стили окна, которое будет создаваться.

Сначала определяется класс окна. В том случае, если класс окна до сих пор не определен (и ТОЛЬКО в этом случае), то полю Ipsz­Class присваивается значение _afxWndFrameOrView. Что находит­ся в этой переменной, станет ясным после того, как мы взглянем на участок кода, находящийся в файле afximpl.h:

// special AFX window class name mangling

#ifndef _UNICODE #define _UNICODE_SUFFIX #else

#define _UNICODE_SUFFIX _TPu") #endif

#ifndef _DEBUG #define DEBUG SUFFIX

#else

#define _DEBUG_SUFFIX _T(M") #endif

#ifdef _AFXDLL #define _STATIC_SUFFIX #else

#define _STATIC_SUFFIX _T(^s") #endif

#define AFX_WNDCLASS(s) \ _TPAfx") _T(s) _T("42") _DEBUG_SUFFIX

#define AFX_WND #define AFX_WNDCONTROLBAR #define AFX_WNDMDIFRAME #define AFX_WNDFRAMEORVIEW #define AFX WNDOLECONTROL

STATIC SUFFIX UNICODE SUFFIX

AFX_WNDCLASS("Wnd") AFX_WNDCLASSrControlBar") AFX_WNDCLASS("MDIFrame") AFX_WNDCLASS("FrameOrView") AFX_WNDCLASSrOleControl")

С другой стороны, в файле wincore.cpp мы увидим:

const TCHAR _afxWnd[] = AFX_WND;

const TCHAR _afxWndControlBar[] = AFX_WNDCONTROLBAR; const TCHAR _afxWndMDIFrame[] = AFX_WNDMDIFRAME; const TCHAR _afxWndFrameOrView[] = AFX_WN D FRAME ORVIEW; const TCHAR _afxWnd01eControl[] = AFX_WNDOLECONTROL;

Исходя из этих фактов, а также зная, что в настоящий момент мы генерируем отладочную версию нашей программы, сделаем вывод о том, что классом создаваемого окна фрейма будет являться «AfxFrameOrView42d». В качестве упражнения я предлагаю чита­телю проверить правильность этого утверждения.

Определив класс и стили создаваемого окна фрейма, мы полу­чили все необходимое для создания окна. Следовательно, ника­ких проблем создание окна фрейма вызвать не должно.