Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

 function MatchTopicAndService(Topic, Service: HSz): Boolean;

 function MatchTopicAndItem(Topic, Item: HSz): Integer;

 function WildConnect(Topic, Service: HSz; ClipFmt: Word): HDDEData;

 function AcceptPoke(Item: HSz; ClipFmt: Word;Data: HDDEData): Boolean;

 function DataRequested(TransType: Word; ItemNum: Integer; ClipFmt: Word): HDDEData;

 procedure FormCreate(Sender: TObject);

 procedure FormDestroy(Sender: TObject);

 procedure FormShow(Sender: TObject);

 procedure EnterData1Click(Sender: TObject);

 procedure Clear1Click(Sender: TObject);

private

 Inst       : Longint;

 CallBack   : TCallback;

 ServiceHSz : HSz;

 TopicHSz   : HSz;

 ItemHSz    : array [1..NumValues] of HSz;

 ConvHdl    : HConv;

 Advising   : array [1..NumValues] of Boolean;

 DataSample : TDataSample;

public

 { Public declarations }

end;


var Form1: TForm1;

implementation

uses DDEDlg; { Форма DataEntry }


{$R *.DFM}


procedure TForm1.Exit1Click(Sender: TObject);

begin

 Close;

end;

{ Глобальная инициализация }


const

 DemoTitle: PChar = 'DDEML демо, серверное приложение';

 MaxAdvisories = 100;

 NumAdvLoops : Integer = 0;


{ Локальная функция: Процедура обратного вызова для DDEML }

{ Данная функция обратного вызова реагирует на все транзакции, генерируемые DDEML. Объект "target Window" (окно-цель) берется из глобально хранимых, и для реагирования на данную транзакцию, тип которой указан в параметре CallType, используются подходящие методы этих объектов.}

function CallbackProc(CallType, Fmt: Word; Conv: HConv; HSz1, HSz2: HSZ; Data: HDDEData; Data1, Data2: Longint): HDDEData; export;

var

 ItemNum: Integer;

begin

 CallbackProc := 0; { В противном случае смотрите доказательство }

 case CallType of

 xtyp_WildConnect:

  CallbackProc := Form1.WildConnect(HSz1, HSz2, Fmt);

 xtyp_Connect:

  if Conv = 0 then begin

   if Form1.MatchTopicAndService(HSz1, HSz2) then CallbackProc := 1; { Связь! }

  end;

  { После подтверждения установки соединения записываем дескриптор связи как родительское окно.}

 xtyp_Connect_Confirm:

  Form1.ConvHdl := Conv;

  { Клиент запрашивает данные, делает прямой запрос или отвечает на уведомление. Возвращаем текущее состояние данных.}

 xtyp_AdvReq, xtyp_Request:

  begin

   ItemNum := Form1.MatchTopicAndItem(HSz1, HSz2);

   if ItemNum > 0 then CallbackProc := Form1.DataRequested(CallType, ItemNum, Fmt);

  end;

  { Отвечаем на Poke-запрос ... данная демонстрация допускает только Pokes для DataItem1. Для подтверждения получения запроса возвращаем dde_FAck, в противном случае 0.}

 xtyp_Poke:

  begin

   if Form1.AcceptPoke(HSz2, Fmt, Data) then CallbackProc := dde_FAck;

  end;

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT