Виртуальная библиотека Delphi - [36]
> WindowMsg.Msg := Msg;
> WindowMsg.WParam := WParam;
> WindowMsg.LParam := LParam;
> // Обрабатываем его
> WindowProcedure(WindowMsg);
> // Возвращаем результат обратно системе
> Result := WindowMsg.Result;
>end;
>////////////////////////////////////////////////////////////////////////////////
>// Виртуальная функция для обработки оконных сообщений
>////////////////////////////////////////////////////////////////////////////////
>procedure TLiteFrame.WindowProcedure(var Msg: TMessage);
>begin
> // Распределяем сообщения по обработчикам
> Dispatch(Msg);
>end;
>////////////////////////////////////////////////////////////////////////////////
>// 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
>// ____________________________________________
>// Инициализация / финализация
>////////////////////////////////////////////////////////////////////////////////
>////////////////////////////////////////////////////////////////////////////////
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.