Вниз
Скачать: CL | DM;

Возможно ли вставить чужое окно (по HWND) в форму ?   Найти похожие ветки 

 
Сергей Чурсин   (2002-04-08 11:10) [0]

Возможно ли вставить чужое окно (по HWND) в форму ?
То есть аналогично Form2.Parent:=Form1.Panel1, только вместо
Form2 - чужое окно (через какие-нибудь апимшные функции заменить радителя у него, что-ли) ?


 
Song ©   (2002-04-08 11:12) [1]

Чисто гепатетически должно, только Form.Parent:=HWND;


 
Сергей Чурсин   (2002-04-08 12:05) [2]

только Form.Parent:=HWND;
Не, ну так же работать не будет - parent имеет тип TWinControl...
И property HWND у ТWinControl - read only.
Речь скорее о том, что бы заставить апишное окно (с HWND) каким-то образом считать parentom (есть же такое понятие и для API) нашу форму... Вот только как ?


 
REA   (2002-04-08 12:18) [3]

Имхо это неверный подход. Сделать наверно можно, покопавшись в API, но зачем?


 
Сергей Чурсин   (2002-04-08 12:22) [4]

Можно...

procedure TForm1.Button1Click(Sender: TObject);
var H : HWND;
begin
Shellexecute(Form1.Panel1.Handle,"open","calc.exe","","",SW_SHOW);
H := FindWindow (nil, "Calculator");
If H <> 0 then begin
Windows.SetParent(H, Form1.Panel1.Handle);
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) then
Perform(WM_CHANGEUISTATE, MakeWParam(UIS_INITIALIZE, UISF_HIDEACCEL or UISF_HIDEFOCUS), 0);
end;
end;

Только как-бы еще извернуться, чтобы FindWindow срабатывало гарантировано после ShellExecute - а то ShellExecute не успевает.
И все работает на второй click...


 
Сергей Чурсин   (2002-04-08 12:23) [5]

2REA
А почему неверный ? Грозит чем-либо ?







 
Сергей Чурсин   (2002-04-08 12:32) [6]

Вижу уже, что calc.exe остается после закрытия формы-parenta...
Как-бы с этим расправиться?


 
Fantasist   (2002-04-08 20:00) [7]

Понятно, что можно. В winAPI хоть на десктоп можешь повесить контрол.

> Вижу уже, что calc.exe остается после закрытия формы-parenta...
> Как-бы с этим расправиться?

Попробуй, прежде чем закрыть свою форму, послать WM_DESTROY или WM_CLOSE окну калькулятора. Дело в том, что он выполняется в отдельном процессе, а главная форма, кажись, глушит только свои контролы через функции VCL.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
14-70008
Феликс
2002-03-16 20:43
2002.04.22
Компоненты?


3-69739
gai73
2002-04-02 10:10
2002.04.22
TQuery


3-69752
alex_dorin
2002-03-29 11:02
2002.04.22
можно ли прервать sql_транзакцию при использов BDE


1-69801
SergeyB
2002-04-10 11:51
2002.04.22
События в режиме разработки


3-69722
anod
2002-03-31 00:27
2002.04.22
Поиск в таблице и русские буквы




   Наверх