Форум: "Основная";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
ВнизРодительское окно Найти похожие ветки
← →
kblc © (2008-02-18 11:22) [0]Уважаемые мастера, помогите мне пожалуйста решить проблему:
Пишу компонент, наследник от TScrollBox"a ... и для определённой задачи мне нужен хэндл главной формы получить...
делаю это так:
function CanUp(const Style: Integer): BOOLEAN;
begin
Result :=
(Style or WS_CHILD = Style) or
(Style or WS_CLIPCHILDREN = Style);
end;
function GetTopParent(const AHandle: Cardinal): Cardinal;
var
FCanUp: BOOLEAN;
buff : PChar;
begin
Result := AHandle;
buff := AllocMem(MAX_PATH);
repeat
GetClassName (Result, buff, MAX_PATH);
//RealGetWindowClass(Result,buff,MAX_PATH);
FCanUp := CanUp(GetWindowLong(Result, GWL_STYLE));
if FCanUp then
begin
//Result := GetParent(Result);
Result := GetWindowLong(Result,GWL_HWNDPARENT);
end;
until (Result = 0) or (not FCanUp);
FreeMem(buff,MAX_PATH);
end;
где параметр AHandle - хэндл текущего скролл бокса.
Но возникла проблема.
На главной фаорме PageControl, у него TabSheet1, на TabSheet"e расположен Frame... а у фрейма есть мой ScrollBox.
С помощью этой функции у меня получается прыжки такие:
1) TFrame
2) TApplication
и всё... почему-то функция пропускает и TabSheet и PageControl и TForm .... почему?
← →
Игорь Шевченко © (2008-02-18 12:17) [1]
> и для определённой задачи мне нужен хэндл главной формы
> получить...
GetParentForm,
ValidParentForm
← →
kblc © (2008-02-18 12:26) [2]Я бы сам так сделал с удовольствием. Но так нельзя сделать в моём случае!!!
Реализовать нужно это при помощи API. Так как компонент будет использоваться в определённых условиях (не обязательно тех, о которых я писал).
Например: та же ситуация, только вместо фрейма форма, которая лежит на tabsheet. Но эта не просто форма, а форма из DLL, для которой указан лишь ParentWindow, и поймать больше ничего нельзя.
← →
kblc © (2008-02-18 17:20) [3]Уважаемые мастера, обратите внимание, что мне нужно это сделать именно с помощью WinAPI. Другие способы реализации никак не подходят.
Заранее спасибо!
← →
Игорь Шевченко © (2008-02-19 10:01) [4]kblc © (18.02.08 17:20) [3]
Посмотри как это сделано в VCL, скопируй.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c