Mfc application что это за программа

Основы MFC

Библиотека MFC содержит большую иерархию классов, написанных на С++. Структура иерархии приведена на рис. 1. В ее вершине находится класс СObject, который содержит различные функции, используемые во время выполнения программы и предназначенные, в частности, для предоставления информации о текущем типе во время выполнения, для диагностики, и для сериализации.

Информация о типе времени выполнения

Если указатель или ссылка ссылается на объект, производный от класса CObject, то в этом случае предусмотрен механизм определения реального типа объекта с помощью макроса RUNTIME_CLASS(). Хотя в С++ имеется механизм RTTI, механизм, реализованный в MFC, намного более эффективен по производительности.

Диагностика

Каждый класс, производный от CObject, может по запросу проверить свое внутреннее состояние и выдать диагностическую информацию. Это интенсивно используется в MFC при отладке.

Сериализация

Сериализация — это механизм, позволяющий преобразовать текущее состояние объекта в последовательный поток байт, который обычно затем записывается на диск, и восстановить состояние объекта из последовательного потока, обычно при чтении с диска. Это позволяет сохранять текущее состояние приложения на диске, и восстанавливать его при последующем запуске.

mcf заработок на футболе

Основные классы

Некоторые классы порождаются непосредственно от CObject. Наиболее широко используемыми среди них являются CCmdTarget, CFile, CDC, CGDIObject и CMenu. Класс ССmdTarget предназначен для обработки сообщений. Класс СFile предназначен для работы с файлами. Класс CDC обеспечивает поддержку контекстов устройств. Об контекстах устройств мы будем говорить несколько позднее.

В этот класс включены практически все функции графики GDI. CGDIObject является базовым классом для различных DGI-объектов, таких как перья, кисти, шрифты и другие. Класс СMenu предназначен для манипуляций с меню. От класса CCmdTarget порождается очень важный класс CWnd.

Он является базовым для создания всех типов окон, включая масштабируемые («обычные») и диалоговые, а также различные элементы управления. Наиболее широко используемым производным классом является CFrameWnd. Как Вы увидите в дальнейшем, в большинстве программ главное окно создается с помощью именно этого класса.

От класса CCmdTarget, через класс CWinThread, порождается, наверное, единственный из наиболее важных классов, обращение к которому в MFC-программах происходит напрямую: CWinApp. Это один из фундаментальных классов, поскольку предназначен для создания самого приложения. В каждой программе имеется один и только один объект этого класса. Как только он будет создан, приложение начнет выполняться.

Функции-члены в MFC

Большинство функций, вызываемых в MFC-программе, являются членами одного из классов, определенных в библиотеке. Большинство функций API доступны через функции-члены MFC. Тем не менее, всегда можно обращаться к функциям API напрямую. Иногда это бывает необходимым, но все же в большинстве случаев удобнее использовать функции-члены MFC.

MFC — Урок 1 — Создание первого диалогового приложения

Глобальные функции в MFC

В библиотеке есть ряд глобальных функций. Все они начинаются с префикса Afx. (Когда MFC только разрабатывалась, то проект назывался AFX, Application Framework. После ряда существенных изменений AFX была переработана в MFC, но прежнее название сохранилось во многих идентификаторах библиотеки и в названиях файлов.) Например, очень часто используется функция AfxMessageBox(), отображающая заранее определенное окно сообщения. Но есть и член-функция MessageBox(). Таким образом, часто глобальные функции перекрываются функциями-членами.

Читайте также:
Вацап вайбер и другие программы это что

Файл AFXWIN.H

Все MFC-программы включают заголовочный файл AFXWIN.H. В нем, а также в различных вспомогательных файлах, содержатся описания классов, структур, переменных и других объектов MFC. Он автоматически подключает большинство заголовочных файлов, относящихся к MFC, в том числе и WINDOWS.H, в котором определены все функции Windows API и другие объекты, которые используются при традиционном программировании на С и «чистом» API.

Каркас MFC-программы

Теперь мы создадим с помощью MFC небольшое приложение. Оно только отображает стандартное окно Windows, и больше ничего не делает. При закрытии окна приложение завершается. Это приложение послужит основой для всех других приложений, которые мы будем рассматривать.

В простейшем случае программа, написанная с помощью MFC, содержит два класса, порождаемые от классов иерархии библиотеки: класс, предназначенный для создания приложения, и класс, предназначенный для создания окна. Другими словами, для создания минимальной программы необходимо породить один класс от CWinApp, а другой — от CFrameWnd. Эти два класса обязательны для любой программы.

Кроме создания вышеупомянутых классов, в программе также должна быть организована обработка всех сообщений, поступающих от Windows. В данном примере программа еще ничего полезного не делает, поэтому отвечать на каждое сообщение не нужно. MFC обработает все сообщения, которые нас не интересуют. Тем не менее в этом примере присутствует карта откликов на сообщения, или просто карта сообщений. Позже мы рассмотрим ее подробнее.

Ниже приведен исходный код программы. Мы всегда будем помещать декларации классов и их реализацию в отдельные файлы. Это соответствует принятой практике программирования на С++.

Исходные тексты примера

simpwin.hpp #include // Класс основного окна приложения class CMainWin: public CFrameWnd < public: CMainWin(); // Декларирование карты сообщений DECLARE_MESSAGE_MAP() >; // Класс приложения. Должен существовать только // один экземпляр этого класса. // Член-функция InitInstance() вызывается при запуске // приложения. class CApp: public CWinApp < public: BOOL InitInstance(); >; simpwin.cpp #include #include #include «SIMPWIN.HPP» // Создание одного и только одного экземпляра // приложения CApp App; // Реализация BOOL CApp::InitInstance() < // Создание главного окна приложения и его // отображение. // Член CApp::m_pMainWnd — это указатель на объект // главного окна. m_pMainWnd = new CMainWin; m_pMainWnd->ShowWindow(SW_RESTORE); m_pMainWnd->UpdateWindow(); // Сигнализируем MFC об успешной инициализации // приложения. return TRUE; > CMainWin::CMainWin() < // Создание окна с заголовком. Используется // встроенный в MFC // класс окна, поэтому первый параметр 0. this->Create(0, «Простейшее приложение на MFC»); > // Реализация карты сообщений BEGIN_MESSAGE_MAP(CMainWin /*класс окна*/, CFrameWnd /*класс-предок*/) END_MESSAGE_MAP()

Рис. 2. Окно, созданное простейшим приложением на MFC

Читайте также:
Для чего нужна программа bandicam

Результат выполнения программы показан на рис. 2. Рассмотрим программу подробнее.

Для создания стандартного окна в приложении должен наследоваться класс от CFrameWnd. В данном примере он называется CMainWin. Он содержит конструктор и макрос DECLARE_MESSAGE_MAP(). Макрос на самом деле разворачивается в декларацию карты сообщений, которая определяет, какая член-функция класса должна вызываться в ответ на сообщение Windows.

Этот макрос применяется для любого окна, в котором обрабатываются сообщения. Он должен быть последним в декларации класса.

Само окно создается в конструкторе с помощью вызова функции Create(). Эта функция используется почти во всех приложениях. Она выполняет действия по созданию окна. В этом примере приведен самый простой случай ее использования. Пока нам нужно знать, что второй параметр определяет заголовок окна, а первый чаще всего равен NULL.

Класс CApp

приложения порождается от CWinApp. Этот класс отвечает за работу программы. В примере используется член-функция со следующим прототипом:

virtual BOOL CWinApp::InitInstance();

Это виртуальная функция, которая вызывается каждый раз при запуске программы. В ней должны производиться все действия, связанные с инициализацией приложения. Функция должна возвращать TRUE при успешном завершении и FALSE в противном случае. В нашем случае, в функции сначала создается объект класса CMainWin, и указатель на него запоминается в переменной m_pMainWnd.

Эта переменная является членом класса CWinThread. Она имеет тип CWnd* и используется почти во всех MFC-программах, потому что содержит указатель на главное окно. В последующих двух строчках через нее вызываются функции-члены окна. Когда окно создано, вызывается функция c прототипом:

BOOL CWnd::ShowWindow(int How);

Параметр определяет, каким образом окно будет показано на экране. Наиболее распространенные значения следующие:

Константа Действие
SW_HIDE Окно становится невидимым
SW_MAXIMIZE Окно максимизируется
SW_MINIMIZE Окно минимизируетс
SW_SHOW Окно отображается, если было невидимо
SW_RESTORE Окно приводится к нормальному размеру

При первом вызове в качестве первого параметра функции можно подставить член m_nCmdShow, в котором хранится значение кода отображения окна, переданное в программу при запуске (например, в ярлыке Windows 95 пользователь может определить, как показывать окно при запуске приложения).

Функция UpdateWindow() посылает окну сообщение о том, что его содержимое нужно перерисовать. В дальнейшем мы рассмотрим этот процесс подробнее.

В конце программы помещена реализация карты сообщений:

BEGIN_MESSAGE_MAP(CMainWin /*класс окна*/, CFrameWnd /*класс-предок*/) END_MESSAGE_MAP()

Первый макрос всегда имеет два параметра, первый — класс окна, второй — класс, от которого порожден класс окна. В данном примере карта сообщений пустая, то есть все сообщения обрабатывает MFC.

Подробнее о создании масштабируемых окон

В примере была использована функция Create(), которая на самом деле имеет много параметров. Ее прототип таков:

Первый параметр, ClassName, определяет имя класса окна для оконной подсистемы Windows. Обычно его не нужно явно задавать, так как MFC выполняет всю необходимую черновую работу. В данных методических указаниях мы не будем использовать своих классов окон. Параметр Style задает стиль окна. По умолчанию создается стандартное перекрываемое окно. Можно задать свой стиль, объединив с помощью операции «или» несколько констант из приведенных ниже:

Читайте также:
Программа ack что это
Константа Элемент окна
WS_OVERLAPPED Стандартное окно с рамкой
WS_MAXIMIZEBOX Кнопка максимизации
WS_MINIMIZEBOX Кнопка минимизации
WS_SYSMENU Системное меню
WS_HSCROLL Горизонтальная полоса прокрутки
WS_VSCROLL Вертикальная полоса прокрутки

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

Начальное положение и размер окна определяются параметром XYSize. Это структура, которая определяет экранные координаты левого верхнего и правого нижнего угла прямоугольника, в котором будет отображено окно.

Все остальные параметры, которые мы будем использовать, будут рассмотрены в соответствующих разделах.

Источник: codenet.ru

Русские Блоги

MFC (Microsoft Foundation Classes, базовый класс Microsoft) представляет собой набор предопределенных классов, инкапсулирует Windows API, является объектно-ориентированным методом для программирования Windows.

Майор Регистрация 19.11.2010 Адрес Предел для меня только Небеса Сообщений 393

Ошибка — Client MFC Application

Приветствую ребят, кто сталкивался с подобной ошибкой — Client MFC Application?

Ошибка вылетает в любой момент игры, нашел информацию что нужно переустановить или обновить —

Visual C++ Redistributable 2005, 2008, 2010, 2010 SP1

Данный вариант не помог, не знаю теперь как исправить ее, инфу по исправлению не нашел!

Система — Windows 8 x64

Music for Movies (Музыка для Мувиков!)
Найди свою музыку!
VK

25.07.2014, 00:06 #2

GISMAG94

Генерал армии Регистрация 10.11.2011 Сообщений 1,876

Последний раз редактировалось GISMAG94; 25.07.2014 в 00:09 .

25.07.2014, 00:20 #3

snapa22

Генерал-лейтенант Регистрация 30.08.2011 Сообщений 1,558

В случае возникновения этой ошибки, вариантов решения тоже несколько, только они исключают друг друга, т.е. может работать из них только 1:

Возможный вариант решения №1
Отключаем все совместно-работающие программки, которые хоть чем-то могут помешать полной работоспособности игры.

Возможный вариант решения №2
У вас удалился напарник, вам нужно увидеть уведомление об его удалении.
Удалите из папки C:Users***DocumentsCrossFire два файла SaveIdData.dat и System.dat. После, перезаходите в игру до тех пор, пока не появится уведомление об удалении вашего напарника из-за длительного бездействия.

25.07.2014, 00:28 #4

LDavinci

Майор Регистрация 19.11.2010 Адрес Предел для меня только Небеса Сообщений 393

В случае возникновения этой ошибки, вариантов решения тоже несколько, только они исключают друг друга, т.е. может работать из них только 1:

Возможный вариант решения №1
Отключаем все совместно-работающие программки, которые хоть чем-то могут помешать полной работоспособности игры.

Возможный вариант решения №2
У вас удалился напарник, вам нужно увидеть уведомление об его удалении.
Удалите из папки C:Users***DocumentsCrossFire два файла SaveIdData.dat и System.dat. После, перезаходите в игру до тех пор, пока не появится уведомление об удалении вашего напарника из-за длительного бездействия.

Пробовал все 2 варианта, по 1-му, запущен только браузер Хром и Скайп, в прошлом из-за 2 программ такой ошибки не было, по 2-му варианту, удалил 2 файла, только место SaveIdData.dat у меня GameData.dat и System.dat, перезаходил 15-20 раз, никакой таблички нет, по удалению напарников!

Music for Movies (Музыка для Мувиков!)
Найди свою музыку!
VK

Источник: cfire.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru