Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизВозможно ли вставить чужое окно (по 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 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c