Delphi-int.ru: портал программистов

Вход Регистрация | Забыли пароль?

Просмотр кода

Идентификатор: 246edf3e Описание: Код загружен: 9 июля 2012, 21:15 (Amidamaru)

  1. procedure GrabWindow(Wnd, DestWnd: HWND;
  2. const WithNoCaption: boolean = true);
  3. var
  4. ui: NativeUInt; // Cardinal
  5. i: NativeInt; // Integer
  6. begin
  7. if IsWindow(Wnd) and IsWindow(DestWnd) then
  8. // убеждаемся, что у нас - окна
  9. begin
  10. ui:=GetClassLongPtr(Wnd,GCL_STYLE); // получаем стили класса окна
  11. ui:=ui and (not CS_OWNDC) and (not CS_CLASSDC) or CS_PARENTDC;
  12. // изменяем: нам нужно чтобы окно рисовалось на родительском окне
  13. SetClassLongPtr(Wnd,GCL_STYLE,ui); // устанавливаем изменения
  14.  
  15. i:=GetWindowLongPtr(Wnd,GWL_STYLE); // получаем стили окна
  16. i:=i and (not WS_POPUP) or WS_CHILD;
  17. // изменяем: обычное окно превращается в дочернее
  18. if WithNoCaption then
  19. i:=i and (not WS_CAPTION);
  20. // если нужно также убираем бордюр окошка вместе с названием
  21. SetWindowLongPtr(Wnd,GWL_STYLE,i); // устанавливаем изменения
  22.  
  23. // поидее нужно также внести зависимость закрытия окна
  24. // от закрытия родительского, и убрать кнопку из таскбара
  25.  
  26. winapi.Windows.SetParent(Wnd,DestWnd);
  27. // устанавливаем родителя: окно перерисуется самостоятельно
  28. // в старых версиях делфи 'winapi.' не нужно
  29. end;
  30. end;

Ссылка на данный код:

На главную страницу сервиса обмена кодом »