Читать «Виртуальная библиотека Delphi» онлайн - страница 106
Unknown
if 3 in PByteSet(@W)^ then ...
...
В Delphi 2.0 есть специальный класс
6. Проблема с числом типа Single в DLL.
Я написал на C++ DLL, в которой у меня функция использует число типа float, передал из Delphi число типа
Если вы используете числа с плавающей точкой, лучше передавать их не по значению, а по ссылке (указатель в C++). Вероятно DLL написана на MS Visual C++, так как Microsoft и Borland используют разные соглашения о передаче параметров при работе с сопроцессором. В случае Borland C++ и Delphi должны использовать одинаковый способ передачи параметров и значений (через стек сопроцессора). В любом случае вместо
7. Как заставить приложение Delphi отвечать на сообщения Windows?
Используем сообщение
procedure WMWinIniChange(var Message: TMessage); message WM_WININICHANGE;
Код в implementation может выглядеть так:
procedure TForm1.WMWinIniChange(var Message: TMessage);
begin
inherited;
end;
Вызов inherited метода очень важен. Обратите внимание также на то, что для функций, объявленных с директивой message (обработчиков событий Windows) после inherited нет имени наследуемой процедуры, потому что она может быть неизвестна или вообще отсутствовать (в этом случае вы в действительности вызываете процедуру DefaultHandler).
8. Как обработать события от других приложений?
Попробуйте сделать это следующим образом:
type
TForm1 = class(TForm)
...
private
procedure WMNCActivate(var Msg: TMessage); message WM_NCACTIVATE;
end;
procedure TForm1.WMNCActivate(var Msg: TMessage);
begin
{ здесь обработка принятых событий }
end;
Пример проекта показывает, как получить сообщения Windows в данном случае. Это редкий случай, в большинстве случаев переопределение процедуры
program Project1;
uses
Forms,
Unit1 in 'UNIT1.PAS'
Messages, WinTypes, WinProcs,
var
OldWndProc: TFarProc;
function NewWndProc(hWndAppl: HWnd; Msg, wParam: Word; lParam: Longint): Longint; export;
begin