Просмотр кода
Идентификатор: 246edf3e Описание: Код загружен: 9 июля 2012, 21:15 (Amidamaru)
procedure GrabWindow(Wnd, DestWnd: HWND; const WithNoCaption: boolean = true); var ui: NativeUInt; // Cardinal i: NativeInt; // Integer begin if IsWindow(Wnd) and IsWindow(DestWnd) then // убеждаемся, что у нас - окна begin ui:=GetClassLongPtr(Wnd,GCL_STYLE); // получаем стили класса окна ui:=ui and (not CS_OWNDC) and (not CS_CLASSDC) or CS_PARENTDC; // изменяем: нам нужно чтобы окно рисовалось на родительском окне SetClassLongPtr(Wnd,GCL_STYLE,ui); // устанавливаем изменения i:=GetWindowLongPtr(Wnd,GWL_STYLE); // получаем стили окна i:=i and (not WS_POPUP) or WS_CHILD; // изменяем: обычное окно превращается в дочернее if WithNoCaption then i:=i and (not WS_CAPTION); // если нужно также убираем бордюр окошка вместе с названием SetWindowLongPtr(Wnd,GWL_STYLE,i); // устанавливаем изменения // поидее нужно также внести зависимость закрытия окна // от закрытия родительского, и убрать кнопку из таскбара winapi.Windows.SetParent(Wnd,DestWnd); // устанавливаем родителя: окно перерисуется самостоятельно // в старых версиях делфи 'winapi.' не нужно end; end;