Основы

    Создавая приложения для Windows, программист очень часто не имеет прямого доступа к тем объектам, с которыми он работает, так как Windows заставляет использовать так называемый Интерфейс Разработки Приложений (Application Programming Interface — API), состоящий из сотен функций, через которые программист «общается» с системой. Самым важным понятием В WinAPI является описатель (Handle). Описатель представляет собой 32-разрядное целое число, связанное с некоторым объектом Windows, причем все взаимодействия программы с этим объектом происходит посредством функций API, одним из параметров которых является описатель, т.е. можно сказать, что описатель — это связующее звено между логически и физическим объектами. В Delphi тип-описатель представляет собой число типа LongInt. Для описателей определен тип THandle:

type THandle : LongInt;

Кроме типа THandle в Delphi поддерживаются также имена типов, пришедшие из С++, а именно: HWND, HMENU, HKEY и другие имена, начинающиеся с префикса H (Handle); все эти типы определены так: type h<name> = THandle , так что записи M : THandle и M : HWND эквивалентны. Заимствованные имена типов используются для улучшения читабельности программы.

Текстовые строки

Windows писалась на языке С++, в котором отсутствует строковой тип как таковой и вместо него используются символьные массивы (признаком конца строки служит символ с кодом нуль), поэтому для совместимости с такими строками в Delphi поддерживается тип PChar. Физически тип PChar является просто указателем на символ (^char), однако у него гораздо больше свойств, чем у простого указателя . Во-первых, переменная типа PChar может рассматриваться как массив символов с нулевой базой и наоборот, т.е. если вам нужно передать в некоторую функцию переменую типа PChar, вы можете пойти двумя путями:

	var p : array[0..255] of char;
	...
	SomeFunc(p); 

	...


	
var p : PChar;

GetMem(p,256);
SomeFunc(p);
...
FreeMem(p,256);
...

Эти два кода эквивалентны, первый обычно используется в случае, когда длина передаваемой строки не превосходит некоторого небольшого числа; второй тип кода используется, когда размер получаемой строки не известен на момент объявления переменной.

Во-вторых, если у вас есть переменная типа PChar, то вы можете извлекать нужный символ из неё так, как если бы переменная была массивом:

ch := p[10];

Для работы с типом PChar в Delphi существует ряд функций, начинающихся с префикса Str (StrPas и т.д.), полный их список можно увидеть в справке по Delphi. Все эти функции расположены в модуле sysutils.

Для преобразования string-строк в PChar служит функция StPCopy, хотя однако иногда удобнее использовать следующий трюк:

Var s : String;
Begin
  s:='Example';


  SomeFunc(@s[1]);
End;

Мы просто передаем в процедуру адрес первого символа текстовой строки, при этом конечный нулевой символ уже существует в конце string-строки. Для обратного преобразования существует функция StrPas, однако допустимо и простое присваивание string-строке строки с завершающим нулём.

CallBack functions

CallBack functions или функции обратного вызова — это функции, код которых пишете вы, но вызывает их Windows. Эти функции отличаются от остальных тем, что в заголовке у них добавлено ключевое слово stdcall, это ключевое слово заставляет компилятор генерировать особый вид кода. Примером такой функции может служить оконная процедура.

Процессы (Process)

Процессом в Windows называется любое выполняющееся приложение либо библиотека. Любой процесс имеет свой уникальный описатель, причем значение этого описателя представляет собой адрес с которого приложение либо библиотека загружены в память.

Поток (Thread)

Потоком в Windows называется тот «путь», по которому идет программа, например, при запуске процесса создается поток называемый главным. Также под потоком можно понимать кусок программного кода, выполняющийся независимо от других кусков.

Хостинг от uCoz