17.02.2012 12:24:18

Приложения для Windows

DLL – библиотеки динамической компоновки

Представляет из себя библиотеки классов, реализующих функции API

API – набор функций, которые программы могут вызвать для определённой задачи. DLL отображается в адресном пространстве каждого процесса.

Библиотеки USER, KERNEL, GDI

Особенности приложений:

32-разрядность, интерфейс прикладных программ API, которые реализованы в виде DLL.

16-разрядные приложения обычно консольные.

32-х разрядные тоже могут быть консольными приложениями (не имеющие своего окна)

Windows Messages. Сообщения окну, это запись определённой информации о событии в область памяти, доступной оконной процедуре.

1 сообщение – общее системное, и очередь сообщения у каждого окна.

Объектно-ориентированное программирование в среде Windows.

С большими затратами времени в следствии учёта сложности программы с учётом взаимодействия её с системой.

 

Программирование с помощью визуального редактора.

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

1)      Фактически для разработки оболочки.

2)      Этот код уже не модернизируется. Необходимо воссоздавать заново.

Кроме этого, генерированный код не оптимизирован и имеет избыточный код.

3. Объектно-ориентированное программирование с помощью библиотек классов.

Функции API большие, параметрические и их много.

OWL – индексуляция классов.

MFC - …


Программирование в среде классов OWL.

Создание Win32-приложений.
При запуске Win32-программы происходят два события: должно быть создано окно и запущен цикл обработки сообщений, из которого с наступлением некоторых событий должен быть осуществлён выход и работа программы завершена. Программа Win32 содержит следующее:

Главна функция – WinMain()
Главная функция OWL OwhMain().

Подготовка и создание класса окна с заданными характеристиками.

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

Функция окна отделена от WinMain Можно создавать множество окон, имеющих одну и ту же оконную функцию.

Объекты функций, использующие одни и те же методы, но имеющие разные характеристики.

Функция WinMain() является точкой входа в программу, регистрация окна, создание его и вход в цикл сообщений.

Регистрация окна происходит с помощью Register(hnd);

Создание окна:  CreateWindows(). Создаёт объект и возвращает handle объекта.

Handle – описание состояния объекта в данный конкретный момент.

HVND

ShWindow – показать окно.

UpdateWindow - .

Запуск и завершение цикла обработки сообщений. Здесь у нас обычный Switch, который представляется на особый случай. GetMessage – функция взятия системного сообщения

TranslateMessage – преобразует сообщение в унифицированную форму.

Запускаем сообщение с помощью DispatcheMessage – передаёт сообщение на обработку в оконную процедуру.

CallBack – функция обратного вызова.

Адрес данной функции передан системе под управление.

При этом оконная функция обрабатывает код этих сообщений, но при этом программисту описывать их код не надо.


ПРАКТИКА

#include <owl\applicat.h>

#include <owl\framewm.h>

 

class TArgsApp::public TApplication

{public:

TArgsApp (const char far* title)

:TApplication (title) {};

Void InitMainWindow(),},

Void TArgsApp::InitMsinWindows()

{char far* title = “[untitle]”;

If(_argc>1) title = argv[1];

MsinWindow = new TFrameWindow(0, title);

}

 

#pragma argsused

OwlMain(int argc, char argv[])

{

TArgsApp app (argv[0]);

Return app.Run();

}

 

Объект класса конструктора в одинаковом порядке.

Стандартная функция класса – чистая виртуальная функция.

Создание главного окна приложения – MainWindow = new TFrameWindow(0,title);

Class TFr::public TFrameWindow

{

Public TFrameWindow*, parent, const char far*, title);

TFr();

protected:

virtual void Paint, TDCP;

bool erase, TReset&;

private: TBitmap*bitmap;

void TFr::Paint,

 

 

WM_Paint – Возможно с перерерисовкой.

 

Таблица откликов на сообщения. В функциях API существует.

DECLARE_RESPONSE_TABLE

Параметром функции – класс, объявленный функцией.

DEFINE_R_T

EV_COMMAN(ID, F1)

Идентификатор клавиши, функция, которую можно вызывать.

В понедельник – ВСЕ С МЕТОДИЧКАМИИ