www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 61 - Win API и MFC

Создаем проект

Оставляем наше консольное приложение Win32 c поддержкой MFC

Описание

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

Вот смотрите пример.

#include "afxwin.h"

void main()
{
 MessageBeep(-1);
}
Функция MessageBeep проигрывает звук связанный с конкретным событием. Как видите у этой функции отсутсвует приставка Afx и вызывается напрямую с использованием API.

Расморим второй пример. Здесь я просто обьявляю класс точки.

#include "afxwin.h"

void main()
{
 CPoint   cp;
}
Этот класс точки является оболочкой. В WIN 32 API предусмотрена структура POINT. Этой структурой можно пользоваться программируя на чистом C. Для этого MFC вообще не обязательна, а достаточно Windows.h :-). Вот где она описана.
/*++
Copyright (c) 1985-1996  Microsoft Corporation
Module Name:
    windef.h
Abstract:
    Basic Windows Type Definitions.
Revision History:
--*/

typedef struct tagPOINT
{
    LONG  x;
    LONG  y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
Разрабатывая MFC разработчики создали оболочку для этой структуры в виде класса CPoint.
AfxWin.H

class CPoint : public tagPOINT
{
public:

// Constructors
	CPoint();
	.......
};
Ну наверно технология создания MFC прояснена. Это оболочка над функциями WIN 32 API позволяющая вам отвлечься от многих подробностей, облегчающая работу и создающая некоторую защиту при изменении API. Это очень важно так как на сегоднешний день есть нескольок разновидностей API. Например для WIN 95 и WIN NT есть довольно большие различия в API. MFC скрывает некоторые различия. Вниманием только некоторые :-))). Если ваша задача создавать приложения под WIN 95 и WIN NT одновременно Вам придеится создать свою коркасную бибьлиотек типа "универсальной MFC". Поступив точно также как и в примерах но учтя все различия.

А что такое вообще API? Это набор функций сосредоточенных в ядре Windows и дополнительных библиотеках. Ядро Windows это

USER    (16,32) .dll       функции ввода с клавиатуры мыши ввод через интерфейс и т.д.
KERNER	(16,32) .dll	   функции операцимонной системы	
GDI  	(16,32) .dll 	   графический интерфейс.
Кроме этих динамических библиотек существует еще большое их количество. Например для поддержки работы по сетям, с модемами и т.д. Все они представлены в виде отдельных DLL. MFC Создает впечатление одного блока. Но это не так. Не так. Все функции, которыми вы пользуетесь рассредоточены. Это иллюзия. И так как с динамическими библиотеками Windows поступает очень круто, еще круче поступают пользователи и программы, писать надежный код тяжело.

Какую компоновку не используй статическую или динамическу, в коде MFC нет кода реализации функций. И если вы используете функцию, а соотвествующей динамической библиотеки нет, то вы получите сообщение об этом и программа работать не будет :-)). Выход только один. Вы должны знать архитектуру Windows, знать где находится код функций, и предусматривать это не поддаваться на иллюзию создаваемую каркасной библиотекой MFC.

Конечно, ядро присутствует всегда, иначе Windows не будет работать, но например Ras32.dll для работы с удаленным доступом совсем не обязательна. Но функции по работе с ней есть в API, а значит доступны в MFC. Что будет если эту DLL удалят, а ваша программа должна её использовать ??? Догадываетесь :-) !!


Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz