Вниз
Скачать: 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.011 c
1-69821
hooky-mars
2002-04-10 18:38
2002.04.22
SystemTray&Windows


3-69676
vopros
2002-03-29 15:34
2002.04.22
Почему русскую букву н не воспринимает Locate?


3-69729
kserg@ukr.net
2002-04-01 12:40
2002.04.22
Кто пользуется (и соот-но установил) в Делфи TStatusBarPro ?


14-69988
Hel
2002-03-14 13:54
2002.04.22
---|Ветка была без названия|---


4-70070
Керик
2002-02-17 05:53
2002.04.22
Указатель в значок




   Наверх