Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 22:51   #1
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию DWMAPI

Привет Всем!

Вот решил освоить dwmapi windows vista/7.
Интересует: превью-окно, медиа контролы, добавление в меню.
особенно процедуры/функции для установки слежения за областью формы которые будут отображаться в превью.

вот имеется такой код
Код:
if DwmCompositionEnabled then
begin
  if Succeeded(DwmRegisterThumbnail(Handle,  
   FindWindow('Progman', nil), PH)) then
  begin
    try
      Props.dwFlags := DWM_TNP_SOURCECLIENTAREAONLY or                                       
           DWM_TNP_VISIBLE or DWM_TNP_RECTDESTINATION;
      Props.fSourceClientAreaOnly := false;
      Props.fVisible := true;
      Props.opacity := 255;
      Props.rcDestination := zmDisplay.ClientRect;
      DwmUpdateThumbnailProperties(PH^, Props);
    except
    end;
  end;
end;
он не работает, вызывает падение программы. Что не так?

Кто может поделится рабочим кодом?
ZuBy вне форума Ответить с цитированием
Старый 12.01.2011, 23:29   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Телепатор подсказывает кривые заголовочники.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 12.01.2011, 23:41   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Телепатор подсказывает кривые заголовочники.
Delphi XE, Win7
ZuBy вне форума Ответить с цитированием
Старый 13.01.2011, 10:21   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Судя по записи, вы слабо разбираетесь в указателях. PH на что указывает? Есть подозрение, что в космос.

P.S. Привели бы полный код, где были записаны все подготовительные действия и объявления - не было бы этого гадания в день по догадке, а сразу бы дали ответ. Почему из вас клещами всё надо вытягивать?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 14.01.2011, 08:10   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
var
  PH: PHTHUMBNAIL;
  Props: DWM_THUMBNAIL_PROPERTIES;
begin
if DwmCompositionEnabled then
begin
  if Succeeded(DwmRegisterThumbnail(Handle,  
   FindWindow('Progman', nil), PH)) then
  begin
    try
      Props.dwFlags := DWM_TNP_SOURCECLIENTAREAONLY or                                       
           DWM_TNP_VISIBLE or DWM_TNP_RECTDESTINATION;
      Props.fSourceClientAreaOnly := false;
      Props.fVisible := true;
      Props.opacity := 255;
      Props.rcDestination := zmDisplay.ClientRect;
      DwmUpdateThumbnailProperties(PH^, Props);
    except
    end;
  end;
end;
P.S. Переписан с MSDN
http://msdn.microsoft.com/en-us/libr...41(VS.85).aspx

Последний раз редактировалось ZuBy; 14.01.2011 в 08:13.
ZuBy вне форума Ответить с цитированием
Старый 14.01.2011, 13:27   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Переписан, да криво.

Мат-часть.

Код:
var
  PH: HTHUMBNAIL; 
  Props: DWM_THUMBNAIL_PROPERTIES;
  Wnd: HWND;
begin
  if DwmCompositionEnabled then
  begin
    Wnd := FindWindow('Progman', nil);
    OleCheck(DwmRegisterThumbnail(Handle, Wnd, @PH));

    Props.dwFlags := DWM_TNP_SOURCECLIENTAREAONLY or                                       
         DWM_TNP_VISIBLE or DWM_TNP_RECTDESTINATION;
    Props.fSourceClientAreaOnly := false;
    Props.fVisible := true;
    Props.opacity := 255;
    Props.rcDestination := zmDisplay.ClientRect;
    OleCheck(DwmUpdateThumbnailProperties(PH, Props));
  end;
end;
Одну ошибку исправил. Остальные, если они есть, искать лень.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 14.01.2011, 17:04   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

GunSmoker, спасибо. Домой приду проверю...
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DwmApi в Delphi 7 ChEaTeR-abc Общие вопросы Delphi 10 08.06.2012 12:09