Russian Qt Forum

Qt => Общие вопросы => Тема начата: Yuriy от Сентябрь 17, 2011, 23:36



Название: Windows предварительный просмотр
Отправлено: Yuriy от Сентябрь 17, 2011, 23:36
Всем привет !
Кто-нибудь знает как устроен механизм показа предварительного просмотра в Windows ?
Задача следующая: в файле XML зашито изображение PNG, как сделать так чтобы Windows Проводник обращался к библиотеке для считывания графической информации из этого файла. и как растолковать ему что нужно обрабатывать его с помощью этой библиотеки и отображать как PNG картинку ???

С Linux Gnome разобрался. Показывает изображения на Ура, а вот с Проводником засада !
Спасибо за помощь !


Название: Re: Windows предварительный просмотр
Отправлено: Yuriy от Сентябрь 21, 2011, 02:47
Ну вроде бы все проясняется. Достаточно было залезть в исходники Wine.

Только вот теперь нужно своять библиотеку, у которой должны быть обязательные функции:

   BOOL DllMain(DWORD dwReason, LPVOID lpReserved) throw();
   HRESULT DllRegisterServer() throw();
   HRESULT DllUnregisterServer() throw();

И здесь начинается коллабс. При попытке вызова regsvr32 /i PreviewDll.dll :
PreviewDll.dll была загружена, но найти точку входа для DllRegisterServer не удалось. Зарегистрировать этот файл невозможно.

Долго копал и дошел до того , что
http://blogs.msdn.com/b/karinm/archive/2007/12/05/troubleshooting-error-c1083-cannot-open-include-file-atlbase-h.aspx

оказывается для того чтобы использовать некоторые функции, типа точек входа в библиотеку нужно купить MS Visual ...

Вообщем, бред из бреда с этим дебильным M& . Народ, выручайте кто может.
Млин под Linux превью в 5 секунд собрал, а M&-вцы закрывают свои апи.
Можно конечно от Wine'а хидеры подключить, но это уже слишком маслянно получается.


Название: Re: Windows предварительный просмотр
Отправлено: Yuriy от Сентябрь 21, 2011, 03:01
И еще, может кто сталкивался:
как создать void, который можно будет запустить с rundll32.exe? например, rundll32.exe mylib.dll,func

Или для создания таких func нужен платный MS Visual ???


Название: Re: Windows предварительный просмотр
Отправлено: LisandreL от Сентябрь 21, 2011, 08:07
создать void, который можно будет запустить
Что-что?
В смысле функцию, ничего не возвращающую?

платный MS Visual
Express же бесплатный.


Название: Re: Windows предварительный просмотр
Отправлено: Yuriy от Сентябрь 21, 2011, 13:48
Вообщем, невозможно создать библиотеку с помощь MS Visual Express, функции которой вызываются с Rundll32.exe
Потому что в бесплатной Express нет поддержки ATL, которая отвечает за точки входа библиотек.

Блин, только время зря потратил.


Название: Re: Windows предварительный просмотр
Отправлено: Yuriy от Сентябрь 21, 2011, 14:46
И вообще, все это уже изрядно надоело ! M$ бесплатно раздают программы и как обычно подводные камни: то ассемблерский код не работает, то какие-то функции урезаны.

Надо переходить на GCC я чувствую и под Вин тоже.


Название: Re: Windows предварительный просмотр
Отправлено: panAlexey от Сентябрь 21, 2011, 16:51
Надо переходить на GCC я чувствую и под Вин тоже.
давно пора.
собирать программы на кросплатформенной либе с пом. платформо зависимого кмпайлера - это обречь себя на будущие неприятности.