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)
Идентификатор клавиши, функция, которую
можно вызывать.
В понедельник – ВСЕ С МЕТОДИЧКАМИИ