Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
16.02.2016
Размер:
6.67 Mб
Скачать

Структура mfc-проекта

Теперь мы можем рассмотреть, из каких основных блоков строится MFC-проект. Весь проект в целом можно условно подразделить на следующие составляющие:

  • используемые классы MFC и производные классы;

  • файлы программного кода, включая и заголовочные файлы;

  • файлы ресурсов (пиктограмм, диалоговых окон).

При начальном знакомстве с Visual C++ более целесообразно сначала создавать базовое приложение, используя средства AppWizard, а затем уже усовершенствовать его. Будем называть приложение, формируемое средствами AppWizard, приложением-шаблоном.

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

// MyDIg.cpp : Определяет поведение класса приложения CMyDlgApp.

// #include <afxwin.h> и др.

BEGIN_MESSAGE_MAP(CMyDlgApp, CWinApp) // Таблица обрабатываемых

ON WM PAINT() //сообщений

END_MESSAGE_MAP()

CMyDlgApp: :CMyDlgApp() // Конструктор класса приложения

{}

CMyDlgApp theApp; // Создание объекта приложения

BOOL CMyDlgApp::InitInstance() // Обязательное переопределение метода

.{ CMyDlgDIg dig; // Создание объекта диалогового окна

m_pMainWnd = &dlg;

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

}

// MyDIgDIg.cpp : Файл реализации класса диалогового окна

// #include <afxwin.h> и др.

// Конструктор класса диалогового окна

CMyDIgDlg::CMyDlgDlg(CWnd* pParent /*=NULL*/):CDialog(CMyDlgDlg::IDP, pParent)

{ m hlcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }

void CMyDlgDIg: :DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX); }

BEGIN MESSAGE MAP(CMyDlgDlg, CDialog)

ON WM PAINT()

ON WM QUERYDRAGICON()

END MESSAGE MAP()

///////////////////////////////////////////////////////////////////

// CMyDlgDIg message handlers (обработка сообщений)

BOOL CMyDlgDlg::OnInitDialog()

{ CDialog::OnInitDialog(); // Вызов конструктора базового класса

Setlcon(m hlcon, TRUE); // Определение ярлыка (большого)

Setlcon(m_hlcon, FALSE); // Определение ярлыка (маленького)

// TODO: Место для добавления кода инициализации

return TRUE; // return TRUE unless you set the focus to a control

}

void CMyDlgDlg::OnPaint()

{ // Код обработки события

}

HCURSOR CMyDlgDlg::OnQueryDragIcon()

{ return (HCURSOR) m_hIcon; }

// MyDlg.h : главный заголовочный файл для приложения MYDLG

class CMyDlgApp : public CWinApp

{public: CMyDlgApp();

// Overrides

public:

virtual BOOL Initlnstance();

// Implementation

DECLARE MESSAGE_MAP()

};

// MyDlgDlg.h : заголовочный файл

// Объявление класса диалогового окна CMyDlgDIg

class CMyDlgDIg : public CDialog

{

// Конструкторы

public:

CMyDlgDlg(CWnd* pParent = NULL);

// Dialog Data

enum { IDD = IDD_MYDLG_DIALOG };// Идентификатор объекта

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

// Implementation

protected:

HICON m_hIcon;

// Функции обработки сообщений из таблицы сообщений

virtual BOOL OnlnitDialog();

afx_msg void OnPaint();

afx msg HCURSOR OnQueryDragIcon();

DECLARE MESSAGE MAP()

};

Соседние файлы в папке VC++Баженова