function GetWindow(Wnd : HWND; Param) : HWND
Функция возвращает описатель окна удовлетворяющий запросу.
Wnd
Описатель какого-либо начального окна
Param
Принимает одно из следующих значений-констант:
gw_Owner
Возвращается описатель окна-предка (0 - если нет предка).
gwHWNDFirst
Возвращает описатель первого окна (относительно Wnd).
gw_HWNDNext
Возвращает описатель следующего окна (окна перебираются без повторений,
т.е. если вы не меняли параметр Wnd функции, повторно описатели не
возвращаются)
gw_Child
Возвращает описатель первого дочернего окна.
Пример:
...
var s:string; Han, Child : Hwnd;
Begin
han:=GetWindow(Form1.handle,gw_HWNDFirst);{получаем описатель первого окна
относительно окна формы Form1}End;
...
function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer):
Integer;
Функция возвращает текст окна. Для формы это будет заголовок, для кнопки -
надпись на кнопке.
hWnd
Описатель того окна, текст которого нужно получить.
lpString
Переменная, в которую будет помещен результат
nMaxCount
Максимальная длина текста, если текст длиннее, то он обрезается.
Пример:
...
Var Buff : Array[0..127] of char; s : String;
Begin
GetWindowText(Form1.Handle,Buff,SizeOf(Buff));
s:=StrPas(Buff);
label1.caption:=s;
End
...
function SetWindowText(hWnd: HWND; lpString: PChar): BOOL;
Устанавливает текст окна.
hWnd
Описатель того окна, текст которого нужно установить
lpString
Строка, содержащая устанавливаемый текст.
Пример:
...
Var Buff : Array[0..127] of char;
Begin
StrPCopy("New Text",Buff);
SetWindowText(form2.button1.handle,Buff);{установить надпись на кнопке
Button2 "New Text"}End;
...
function EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;
Устанавливает доступность окна(окно недоступно, если оно не отвечает на
события мыши, клавиатуры и т.д.). Аналог в Delphi свойство Enabled
компонентов. EnableWindow возвращает True, если всё прошло успешно и False в
противром случае.
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL; Показывает
или прячет окно.
hWnd
Описатель нужного окна
nCmdShow
Константа, определяющая, что будет сделано с окном:
SW_HIDE
SW_SHOWNORMALSW_NORMAL
SW_SHOWMINIMIZED
SW_SHOWMAXIMIZED
SW_MAXIMIZE
SW_SHOWNOACTIVATE
SW_SHOW
SW_MINIMIZE
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_RESTORE
SW_SHOWDEFAULT
SW_MAX
Пример:
...
Begin
ShowWindow(Application.Handle,sw_hide);//Будет скрыт значок приложения
на панели задач
ShowWindow(form1.Handle,sw_hide);//Будет скрыта форма Form1End;
...
function GetClassLong(hWnd: HWND; nIndex: Integer): Integer;
Эта функция возвращает 32-разрядное целое, взятое из определенного поля
записи TWndClassEx указанного окна.
hWnd
Описатель окна
nIndex
Константа, определяющая что будет возвращено. Должна быть одна из
следующих:
GCL_MENUNAME
Возвращает указатель на строку, содержащую имя меню класса,
определенного в файле ресурсов связанного с некоторой программой.
GCL_HBRBACKGROUND
Возвращает описатель (HBRUSH) кисти фона, ассоциированной с классом
GCL_HCURSOR
Возвращает описатель (HCURSOR) курсора, фссоциированного с классом
GCL_HICON
Возвращает описатель (HICON) пиктограммы, ассоциированной с классом
GCL_HMODULE
Возвращает описатель процесса (HMODULE), зарегистртровавшего класс.
GCL_CBWNDEXTRA
Возвращает размер памяти (в байтах), выделенной под хранение
дополнительных данных ДАННОГО ОКНА. Описание как использвать эту память,
смотри в описании функции
GetWindowLong
GCL_CBCLSEXTRA
Возвращает размер памяти (в байтах), выделенной под хранение
дополнительных ДАННОГ КЛАССА
GCL_WNDPROC
Возвращает адрес оконной процедуры, связанной с классом.
GCL_STYLE
Возвращает стиль класса (наличие того или иного стиля проверяется
побитовой операцией And с помощью констант типа cs_XXX )
GCL_HICONSM
Обратите внимание: в случае, когда функция возвращает указатель,
необходимо приведение типов (Integer -> Pointer). Делать это можно так:
...
var p : Pointer;
Begin
p:=PChar(GetClassLong(wnd,GCL_WNDPROC));
//Делайте затем с p что хотите (если сможете...)End;
...
function SetClassLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint):
Integer; Парная функция функции
GetClassLong. Устанавливает в нужное поле соответствующее значение.
Функция возвращает старое значение поля, чтобы его потом можно было
исправить или же возврашается ноль, если что-то пошло не так как надо.
hWnd
Описатель окна
nIndex
Одна из констант GCL_XXX из функции
GetClassLong. В зависимости от
значения этого поля будет изменнено нужное поле.
Обратите внимание:при установке полей-указателей необходимо
приведение типа Pointer к типу Integer.
...
var p : Pointer;
l : Integer;
Begin
...
l:=SetClassLong(wnd,GCL_WNDPROC,Integer(p));
//p - может быть и адресом любого объекта pr: @prEnd;
...
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint;
Возвращает информацию о некотором окне в виде 32-битного целого.
hWnd
Описатель окна
nIndex
Константа,определяющая, что будет возвращено. Должна быть одна их
следующих:
GWL_WNDPROC
Возвращает адрес оконной процедуры, связанной с данным окном.
Полученный адрес (после соответсвующих приведений типов) может
использоваться в функции CallWindowProc. Данное значение обычно
используют, если хотят заменить существующую оконную процедуру на свою
собственную, при этом, чтобы не потерять работоспособности окна, обычно
и используют CallWindowProc.
GWL_HINSTANCE
Возвращает описатель приложения, заданный при создании окна функцией
CreateWindowEx.
GWL_HWNDPARENT
Возвращает описатель (HWND) родительского окна
GWL_STYLE
Возвращает стиль окна. Конкркетные значения стилей узнаются при
помощи побитовой операции And и констант WS_XXX
GWL_EXSTYLE
Возвращает расширенный стиль окна. Конкркетные значения стилей
узнаются при помощи побитовой операции And и констант
WS_EX_XXX
GWL_USERDATA
Возвращает 32-битное целое, ассоциированное с окном (это последний
параметр в вызове CreateWindow или CreateWindowEx)
GWL_ID
Возвращает идентификатор окна (он не имеет ничего общего с
описателем окна!), задаваемый параметром hMenu для дочерних окон при
вызове CreateWindow или CreateWindowEx
Обратите внимание: в случае, когда функция возвращает указатель,
необходимо приведение типов (Integer -> Pointer). Делать это можно так:
...
var p : Pointer;
Begin
p:=PChar(GetWindowLong(wnd,GWL_WNDPROC));
//Делайте затем с p что хотите (если сможете...)End;
...
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint):
Longint;
Парная к функции GetWindowLong. Изменяет
аттрибуты определенного окна.
Функция возвращает старое значение свойства, если вызов прошел удачно или
нуль в противном случае.
hWnd
Описатель окна
nIndex
Константа, определяющая, какое свойство будет изменено. Должна быть
одной из констант GWL_XXX из описания функции
GetWindowLong
dwNewLong
Новое значение свойства, определяемого константой nIndex
Обратите внимание:при установке полей-указателей необходимо
приведение типа Pointer к типу Integer.
...
var p : Pointer;
l : Integer;
Begin
...
l:=SetWindowLong(wnd,GCL_WNDPROC,Integer(p));
//p - может быть и адресом любого объекта pr : @prEnd;
...
При разработке CMS S.Builder наша команда
активно использовала AJAX. Теперь вот решили поделиться накопленным
опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные
фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в
S.Builder написана библиотека
sbAJAX. Можете качать и пользоваться :). В этом файле есть функция
sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке
на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет
или полезут баги. Эта функция как раз решает поставленную задачу.
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной
версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и
гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и
имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией
Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые
другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все
внимание на флагманский продукт —
Dojo
1.2.
Если вы профессиональный веб-разработчик и постоянно имеете дело с
разработкой и отладкой сложных AJAX приложений, то наверняка знаете и
используете Firebug — плагин для браузера
Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его
версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем,
которые могут возникнуть при разработке. Но и этот инструмент не лишён если не
недостатков, то некоторых фич, которые могли бы облегчить работу. И даже
идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.