Виртуальная библиотека Delphi

Здесь есть возможность читать онлайн «Виртуальная библиотека Delphi» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Виртуальная библиотека Delphi: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Виртуальная библиотека Delphi»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Виртуальная библиотека Delphi — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Виртуальная библиотека Delphi», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

procedure TLiteFrame.WindowProcedure(var Msg: TMessage);

begin

// Распределяем сообщения по обработчикам

Dispatch(Msg);

end;

Реализация оконного класса TLiteWindow

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

// TLiteWindow

// _______________________________________________

// Инициализация / финализация

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

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

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

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

constructor TLiteWindow.Create(AWndParent: THandle);

begin

inherited;

// Формируем параметры окна

CreateWindowParams(FWndParams);

// Регистрируем класс окна

RegisterClass(FWndParams.WindowClass);

// Создаем окно

with FWndParams do

CreateWindowEx(ExStyle, WindowClass.lpszClassName, Caption,

Style, X, Y, Width, Height,

WndParent, WndMenu, hInstance, Param

);

end;

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

// Конструктор элемента с субклассингом

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

constructor TLiteWindow.CreateSubclassed(AWnd: THandle);

begin

inherited Create(GetParent(AWnd));

// Сохраняем оконную функцию

FWndSubclass := Pointer(GetWindowLong(AWnd, GWL_WNDPROC));

// Сохраняем дескриптор окна

FWndHandle := AWnd;

// Устанавливаем свою оконную функцию

SetWindowLong(FWndHandle, GWL_WNDPROC, DWord(WndCallback));

end;

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

// Деструктор

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

destructor TLiteWindow.Destroy;

begin

// Наш объект - объект субклассиннга ?

if FWndSubclass = nil then

begin

// Уничтожаем класс окна

UnregisterClass(FWndParams.WindowClass.lpszClassName, hInstance);

// Уничтожаем окно

if IsWindow(FWndHandle) then DestroyWindow(FWndHandle);

end

else

// Восстанавливаем старую оконную функцию

SetWindowLong(FWndHandle, GWL_WNDPROC, DWord(FWndSubclass));

// Уничтожение по умолчанию

inherited;

end;

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

// Формирование параметров окна по умолчанию

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

procedure TLiteWindow.CreateWindowParams(

var WindowParams: TWindowParams);

var

WndClassName : string;

begin

// Формируем имя класса

Str(DWord(Self), WndClassName);

WndClassName := ClassName+':'+WndClassName;

// Заполняем информацию о классе окна

with FWndParams.WindowClass do

begin

style := CS_DBLCLKS;

lpfnWndProc := WndCallback;

cbClsExtra := 0;

cbWndExtra := 0;

lpszClassName := PChar(WndClassName);

hInstance := hInstance;

hIcon := LoadIcon(0, IDI_APPLICATION);

hCursor := LoadCursor(0, IDC_ARROW);

hbrBackground := COLOR_BTNFACE + 1;

lpszMenuName := '';

end;

// Заполняем информацию об окне

with FWndParams do

begin

WndParent := FWndParent;

Caption := 'Lite Window';

Style := WS_OVERLAPPEDWINDOW or WS_VISIBLE;

ExStyle := 0;

X := Integer(CW_USEDEFAULT);

Y := Integer(CW_USEDEFAULT);

Width := Integer(CW_USEDEFAULT);

Height := Integer(CW_USEDEFAULT);

WndMenu := 0;

Param := nil;

end;

end;

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

// TLiteWindow

// ______________________________________________

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

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

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

// Обработчик сообщений по умолчанию

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

procedure TLiteWindow.DefaultHandler(var Msg);

begin

// Наш объект - объект субклассиннга ?

if FWndSubclass = nil then

// Вызываем системную функцию обработки сообщений

with TMessage(Msg) do

Result := DefWindowProc(FWndHandle, Msg, WParam, LParam)

else

// Вызываем старую оконную функцию обработки сообщений

with TMessage(Msg) do

Result := CallWindowProc(FWndSubclass, FWndHandle, Msg,

WParam, LParam);

end;

Реализация диалогового класса TLiteDialog

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

// TLiteDialog

// ____________________________________________

// Инициализация / финализация

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

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

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

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

constructor TLiteDialog.Create(AWndParent: THandle);

begin

inherited;

// Формируем параметры диалога

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Виртуальная библиотека Delphi»

Представляем Вашему вниманию похожие книги на «Виртуальная библиотека Delphi» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Виртуальная библиотека Delphi»

Обсуждение, отзывы о книге «Виртуальная библиотека Delphi» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x