Re[3]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    подписка   модер. 
От: c-smilehttp://terrainformatica.com
Дата: 11.12.09 06:06
Оценка:18 (2)
Здравствуйте, maxforme, Вы писали:

M>выводит мелкую иконку (

M>а мне крупная нужна (

Доки спеки читал? Вот например: http://www.terrainformatica.com/wiki/h-smile/built-in-behaviors/file-icon

Вот тебе пример с большими иконами:

<html>
<head>
<title></title>
<style>

picture.icon
{
width:34px;
height:34px;
behavior: file-icon;
-icon-size:"large";
}

picture.icon:hover
{
transition:blend;
outline:4px glow red;
}

</style>
<script type="text/tiscript"></script>
</head>
<body>

<picture.icon filename=".exe" />
<picture.icon filename=".ico" />
<picture.icon filename=".cpp" />
<picture.icon filename="C:\layout\htmlayoutsdk\bin\browse.exe" />

</body>
</html>
Re[2]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: Nikolazwww.nikeware.com
Дата: 11.12.09 08:12
Оценка:36 (1)
Здравствуйте, c-smile, Вы писали:

CS>Не верю. Вот тест:

А зря
Немного не по теме, но подобная проблема с пропаданием картинок есть здесь.
При наведении на img (у которого стоит glow) происходит его пропадание. Причем я долго не мог понять почему в browse.exe все это прекрасно работает, а в реальном приложении нет. Думал у меня косяк какой. Оказалось проблема в следующем:



В первом случаевсе будет отображаться нормально, а во втором случае, если сжать по вертикале по самое "нехочу", то начинается пропадание img при наведении мышью. А по самое "нехочу" у меня сжимается в рабочем приложении именно потому, что это своего рода отдельный контрол. Там высота hWnd выставляется строго по размеру минимальной допустимой высоты, при которой отсутствует вертикальны скроллбар.

Спасибо,
Николай
--
www.nikeware.com — "To merge or not to merge?"
Re[4]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 21.12.09 04:35
Оценка:12 (1)
Здравствуйте, Nikolaz, Вы писали:


N>>В первом случае все будет отображаться нормально, а во втором случае, если сжать по вертикали по самое "нехочу", то начинается пропадание img при наведении мышью. А по самое "нехочу" у меня сжимается в рабочем приложении именно потому, что это своего рода отдельный контрол. Там высота hWnd выставляется строго по размеру минимальной допустимой высоты, при которой отсутствует вертикальный скроллбар.


N>Прошу прощения за беспокойство.

N>Будет ли фикс всего этого дела?
N>В последнем билде тоже не работает

N>Спасибо


Будет. На пока убери glow c этого image.

Можешь добавить image-transformation если нужен visual highlight:

img[cmd]:hover
{
  //outline:1px glow red 1px; 
  foreground-image-transformation: contrast-brightness-gamma(0.8,0.5, 1.6);  
  transition:blend;
}
Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 11.12.09 04:03
Здравствуйте!

Возникла вот такая проблема...



Я отображаю иконки (файлы формата *.ico) на форме htmlayout с помощью <picture .../>
Получаю эти иконки посредством ExtractAssociatedIcon + рисую AlphaBlend + своё сохранение в *.ico

Так вот...
Обновил недавно себе dll'ку на версию 3.3.1.40
а раньше работал с 3.3.1.36

Проблемы:

1. и заметил, что некоторые иконки не показываются
а именно иконки от Total Commander, browse.exe итд
винда их кстати показывает, но открываю иконку программой Paint.NET и там показывается прозрачное поле
на версии 3.3.1.36 htmlayout их показывал

2. проблема с эффектом glow. Раньше эффект glow глючил только на недавно описанных иконках (Total Commander, browse.exe итд)
а именно (я ставил glow на :hover ) иконка пропадала\появлялась при наведении
а теперь ( v3.3.1.40 )такая проблема со всеми иконками при glow

Предполагаю, что всё это из-за подвижек в версиях
3.3.1.37 Fix of rendering of some icons in skin.exe.
3.3.1.39 Fix of GDI handle leak in .ICO files rendering code.


PS решил проверить Restorator'ом закинуть main — иконку в htmlayout
она тоже подмигивает при glow
Re: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 11.12.09 05:02
Здравствуйте, maxforme, Вы писали:

M>1. и заметил, что некоторые иконки не показываются

M> а именно иконки от Total Commander, browse.exe итд

Не верю. Вот тест:

<html>
  <head>
    <title></title>
    <style>
      
      picture.icon 
      {
        width:34px;
        height:34px;
        behavior: file-icon;      
      }
      
      picture.icon:hover
      {
        transition:blend; 
        outline:4px glow red;
      }
     
    </style>
    <script type="text/tiscript"></script>
  </head>
<body>

 <picture.icon filename=".exe" />
 <picture.icon filename=".ico" />
 <picture.icon filename=".cpp" />
 <picture.icon filename="C:\layout\htmlayoutsdk\bin\browse.exe" />

</body>
</html>


Что-то ты там не то делаешь в "ExtractAssociatedIcon + рисую AlphaBlend + своё сохранение в *.ico"
И вообще нафиг оно тебе нужно? Как бы behavior behavior:file-icon; он для того и сделан-то был.
Re[2]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 11.12.09 05:53
Всё бы отлично если бы

CS> picture.icon

CS> {
CS> width:34px;
CS> height:34px;
CS> behavior: file-icon;
CS> }

у меня width:34px;
height:34px;
не работает

выводит мелкую иконку (
а мне крупная нужна (
Re[4]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 11.12.09 06:16
Здравствуйте, c-smile

CS>Доки спеки читал?


читал-читал виноват
надо было large поставить

behavior: file-icon; отличная вещь жаль я про него раньше не знал пришлось изобретать велосипед

+3 виноват ещё раз
Re[3]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: Nikolazwww.nikeware.com
Дата: 11.12.09 08:17
Да, все это появилось где-то примерно начиная с 38-40 билда.

p.s. Сорри за грамматические ошибки в прошлом сообщении.
--
www.nikeware.com — "To merge or not to merge?"
Re[4]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 11.12.09 10:31
Здравствуйте, c-smile!

А возможно ли показывать иконку папки
например

это не показывается как хотелось бы
<picture.icon icon-size="large"  filename="C:\Projects" />


а вот это показывается

<picture.icon icon-size="large"  filename="I:\" />


если бы папки показывало было бы шикарно
Re[5]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 11.12.09 18:10
Здравствуйте, maxforme, Вы писали:

M>если бы папки показывало было бы шикарно


Сделаю.
Re[6]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 14.12.09 07:08
Здравствуйте, c-smile!

Спасибо за fix в 41ом билде

теперь это работает

<picture.icon icon-size="large"  filename="C:\Projects" />


но

если папка была удалена или файл был удален
то объект остаётся, и иконка не рисуется (естественно ссылки то теперь нет)

Можно было бы чтобы когда нет файла рисовалась какая нить Error иконка (раньше по-моему было такое) ?
или это не совпадает с политикой этого бехавира?

Спасибо
Re[7]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 18.12.09 05:05
Здравствуйте, c-smile!
UP
Re[7]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 19.12.09 04:35
Здравствуйте, maxforme, Вы писали:

M>если папка была удалена или файл был удален

M>то объект остаётся, и иконка не рисуется (естественно ссылки то теперь нет)

M>Можно было бы чтобы когда нет файла рисовалась какая нить Error иконка (раньше по-моему было такое) ?

M>или это не совпадает с политикой этого бехавира?

Что-то я не могу сообразить как это лучше имплементировать.
По идее в случае ошибки нужно рисовать тот image который описан в foreground-image атрибуте.
Чтобы можно было конфигурировать как-то... Или как?
Re[3]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: Nikolazwww.nikeware.com
Дата: 20.12.09 11:55
N>В первом случае все будет отображаться нормально, а во втором случае, если сжать по вертикали по самое "нехочу", то начинается пропадание img при наведении мышью. А по самое "нехочу" у меня сжимается в рабочем приложении именно потому, что это своего рода отдельный контрол. Там высота hWnd выставляется строго по размеру минимальной допустимой высоты, при которой отсутствует вертикальный скроллбар.

Прошу прощения за беспокойство.
Будет ли фикс всего этого дела?
В последнем билде тоже не работает

Спасибо
--
www.nikeware.com — "To merge or not to merge?"
Re[8]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 21.12.09 03:12
Здравствуйте, c-smile, Вы писали:

CS>Что-то я не могу сообразить как это лучше имплементировать.

CS>По идее в случае ошибки нужно рисовать тот image который описан в foreground-image атрибуте.
CS>Чтобы можно было конфигурировать как-то... Или как?

Да скорее всего так и лучше будет )
Буду обкатывать пока так, потом посмотрим, что из этого выйдет


            .icon
            {
                behavior: file-icon; 
                width:34px;
                height:34px;
                draggable : only-move;
                cursor : pointer;
                padding-left : 13px;
                padding-top : 13px;
               foreground-image: url(images/error.png);
            }
            .icon:hover
            {
                transition:blend; 
                outline:10px glow blue;
            }


Жду не дождусь показать свою программу...
Обидно, у неё много будет функций, и видимо это не произойдет не скоро.
HTMLayout rull
Re[5]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: Nikolazwww.nikeware.com
Дата: 21.12.09 08:09
Здравствуйте, c-smile, Вы писали:

CS>Будет. На пока убери glow c этого image.

CS>Можешь добавить image-transformation если нужен visual highlight:

Ага, спасибо!
--
www.nikeware.com — "To merge or not to merge?"
Re[2]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 06.02.10 08:24
Здравствуйте, c-smile!

Поднимаю давнейший топик

CS>Что-то ты там не то делаешь в "ExtractAssociatedIcon + рисую AlphaBlend + своё сохранение в *.ico"

CS>И вообще нафиг оно тебе нужно? Как бы behavior:file-icon; он для того и сделан-то был.

behavior:file-icon; может и был сделан для этого, но практика показывает, что он лучше всего работает для статичных страниц
у меня же на странице таких много может быть + возможен Htmlayout drag'n'drop
следовательно при драге начинаются лаги. так как Htmlayout для каждого behavior объекта лезет смотрит иконку и рисует её.
конечно хорошо было бы если всё кэшировалось и не лезло на винт при следующих перересовках.
так бы не возникло этой проблемы.

придется видимо не использовать behavior:file-icon; ",а ездить на своем велосипеде" создавать и рисовать свои иконки для приложений?
Re[3]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 08.02.10 07:02
Здравствуйте, c-smile!

M>придется видимо не использовать behavior:file-icon; ",а ездить на своем велосипеде" создавать и рисовать свои иконки для приложений?


Пришел в ступор

у меня используется вот такая структура

   <div name="1"  id="1001"  selected="">
     <div class="icon_group"  alt="1" >
        <picture class="icon"  src="C:\1.ico" />
       <div class="txt" >text1</div>
     </div>
     <div class="icon_group"  alt="2" >
        <picture class="icon"  src="C:\2.ico" />
       <div class="txt" >text2</div>
      ...

      ...
 
      ...
     </div>                        
  </div>


и у меня таких объектов класса "icon_group" здесь может быть много ( 0-200 думаю )

класс "icon_group"
описывается как

.icon_group
{    
    ...
    ...
    draggable:    only-move;
    flow:        vertical;
    ...            
}


класс "txt" это собственно текст

класс "icon"
описывается как

.icon
{
        margin: 0 * 0 *;
    
    width: 34px;
    height: 34px;
    
    /*behavior: file-icon;*/
}


Так вот. Я думал, отказавшись от behavior: file-icon; и перейдя на src="*.ico", избавлюсь от тормозов перерисовки при Drag'n'Drop, но они не особо то и пропали

Есть мысли, что мне сделать, чтобы избежать тормозов?

Заранее благодарен за любую помощь
Re[4]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 08.02.10 07:13
Здравствуйте, maxforme, Вы писали:

Будет пример где можно воспроизвести "тормоза" — что-то могу сказать/посоветовать.
Re[5]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 08.02.10 08:06
CS>Будет пример где можно воспроизвести "тормоза" — что-то могу сказать/посоветовать.

вот урезанный пример

http://files.rsdn.ru/90326/demo.zip

Открываем закладку 1
Делаем драг — всё отлично

Открываем закладку 2
Делаем драг — уже не очень что-то (

и это при использовании <picture class="icon" src="C:\1.ico" />
а когда был behavior: file-icon; с <picture class="icon" filename="C:\1.lnk" /> то еще хуже естественно
Заранее благодарен
Re[6]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 16.02.10 06:14
UP
Re[6]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 16.02.10 07:03
Здравствуйте, maxforme, Вы писали:

CS>>Будет пример где можно воспроизвести "тормоза" — что-то могу сказать/посоветовать.


M>вот урезанный пример


Спасибо.

Там не отрисовка тормозит а переупордочивание. Надо чинить.
Re[7]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 16.02.10 07:48
Здравствуйте, c-smile!

CS>Там не отрисовка тормозит а переупорядочивание. Надо чинить.


Понятно буду ждать (тогда есть вероятность, что и с behavior:file-icon; нормально заработает, я очень на это надеюсь).

Благодарю за внимание
Re[8]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 17.02.10 02:53
Здравствуйте, maxforme, Вы писали:

M>Понятно буду ждать (тогда есть вероятность, что и с behavior:file-icon; нормально заработает, я очень на это надеюсь).


Пока я это чиню постарайся убрать конструкции вида:

.txt
{
    height: 28px;
}
.txt:hover
{
    height: min-intrinsic;
}


Изменять размеры по mouse hover без особой нужды не надо.
Фактически из-за этих стилей просходит relayout твоих списков. Без всякого видимого результата.
Re[8]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 17.02.10 03:38
Здравствуйте, maxforme, Вы писали:

Что точно делает вот эта декларация:

.icon_group:hover
{    
    outline: 1px glow ;
    outline-color: #497AFF;        
}


Вернее так: что ты ожидаешь от "1px glow"?
Re[9]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 18.02.10 02:53
Здравствуйте, c-smile!

CS>Что точно делает вот эта декларация:


CS>
CS>.icon_group:hover
CS>{    
CS>    outline: 1px glow ;
CS>    outline-color: #497AFF;        
CS>}
CS>


CS>Вернее так: что ты ожидаешь от "1px glow"?


у меня вообще-то уже изменилось сейчас чуть, но суть остается той же.
glow позволяет рисовать поверх, когда производится resize

при наведении мышью на текст добиваюсь вот такого эффекта



вот декларация:

.txt
{
    font: 8pt tahoma;
    margin: 0 * 0 *;
    
    min-height: 28px;
    height:     28px;
    
    min-width: 70px;
    width: min-intrinsic;
    max-width: 70px;    
    
    display:block;    
    color: #85ff33;
    background-color :Transparent;    
    overflow:hidden;    
}
.txt:hover
{
    outline: 2px glow ;
    outline-color: #85ff33;
    
    border-radius: 5px 5px 5px 5px;
    background-color : black;
    height: min-intrinsic;
    overflow:visible;    
}

Re[10]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 03.03.10 03:33
Здравствуйте, c-smile!

Вы можете выложить исходник?
behavior:file-icon;

типа ...\htmlayout\behaviors\behavior_fileicon.cpp
я думаю если его подправить чуть, то у меня быстрее заработает всё
я надеюсь, что мне это поможет

Заранее благодарю!
Re[11]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smilehttp://terrainformatica.com
Дата: 03.03.10 05:56
Здравствуйте, maxforme, Вы писали:

M>Здравствуйте, c-smile!


M>Вы можете выложить исходник?

M>behavior:file-icon;

M>типа ...\htmlayout\behaviors\behavior_fileicon.cpp


А чем собственно fileicon не устраивает?

M>я думаю если его подправить чуть, то у меня быстрее заработает всё

M>я надеюсь, что мне это поможет

#if defined(WINDOWS) && defined(ICO_SUPPORT)

  #include <commctrl.h>
  #include <shellapi.h>

  struct shellicon_ctl_factory: ctl_factory
  {
    shellicon_ctl_factory(): ctl_factory("file-icon") {}
    virtual ctl* create();
  };

  static shellicon_ctl_factory* _shellicon_ctl_factory = 0;

#ifndef INVALID_FILE_ATTRIBUTES //wince has not it
  #define INVALID_FILE_ATTRIBUTES UINT(-1)
#endif

  struct shellicon_ctl: ctl
  {
      bool         big;

      virtual CTL_TYPE get_type() { return CTL_UNKNOWN; }

      shellicon_ctl(): big(false) {}
      virtual const string& behavior_name() const { return _shellicon_ctl_factory->name; }
    
      virtual void attach     (view* v, block* self) 
      {
         ustring sz = get_attr(self,"-icon-size");
         if( sz.length() )
          big = sz != chars_of(L"small");
      }
      virtual void detach     (view* v, block* self) 
      {

      }

      virtual bool draw_foreground(view* v, block* self, surface& sf, const rect& rc )
      { 
        //sb->draw(*v, self, sf, rc);
        ustring filename = get_attr(self,"-filename");
        //if(!filename.length())
        //   filename = self->atts("filename");
        if(!filename.length())        
          filename = self->get_text();
        if(filename.length() == 0)
          return false;

        SHFILEINFOW sfi = {0};
        uint flags = SHGFI_SYSICONINDEX;
//#ifdef PLATFORM_WINCE
        //if( GetFileAttributesW(filename) != FILE_ATTRIBUTE_DIRECTORY )
//#endif
        DWORD file_atts = INVALID_FILE_ATTRIBUTES;
        if( filename.like(L"?:*") ) // it is a physical file
          file_atts = GetFileAttributesW(filename);
        if(file_atts == INVALID_FILE_ATTRIBUTES)
        {
          flags |= SHGFI_USEFILEATTRIBUTES;  
          if(filename == L".")
            file_atts = FILE_ATTRIBUTE_DIRECTORY;
#ifndef PLATFORM_WINCE
          else if(filename == L"..")
            file_atts = FILE_ATTRIBUTE_DEVICE;
#endif
          else
            file_atts = 0;
        }
        if( big ) 
          flags |= SHGFI_LARGEICON;
        else
          flags |= SHGFI_SMALLICON;
        #ifdef _WIN32_WCE
              HIMAGELIST hlist = (HIMAGELIST) SHGetFileInfo( filename, file_atts, &sfi, sizeof(SHFILEINFO), flags );
        #else
              HIMAGELIST hlist = (HIMAGELIST) SHGetFileInfoW( filename, file_atts, &sfi, sizeof(SHFILEINFOW), flags );
        #endif
        if(!hlist)
          return false;
      
        size dimension(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON));
        ImageList_GetIconSize(hlist, &dimension.x, &dimension.y);

        gool::icon ic(hlist,sfi.iIcon,dimension);
        self->draw_image(sf,*v,self->current_style(*v)->fore_image,rc,true,&ic);

        return true;
      }

      virtual bool set_value( block* self, const value& v ) 
      { 
        ustring us = (const wchar_t*)v.to_string();
        view *pv = self->pview();
        self->set_attr("filename",us);
        if(pv)
          pv->refresh(self);
        return true;
      }
      virtual bool get_value( const block* self, value& v ) 
      { 
        ustring filename = get_attr(self,"-filename");
        v = filename;
        return true; 
      }
  };

  ctl* shellicon_ctl_factory::create() 
  { 
    return new shellicon_ctl(); 
  }
#endif
Re[12]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 03.03.10 06:56
Огромное спасибо!

Сейчас только разберусь...

CS>А чем собственно fileicon не устраивает?


Он постоянно лезет в filename и рисует.
Я подумал проще сделать будет (естественно в моем случае) если он будет получать HIMAGELIST hlist только при ATTACH'е
а далее его рисовать, когда надо

Уже собственно я сделал своё нечто подобное, понадеявшись избавиться от тормозов, но что-то переупорядочивание тоже дает весомо о себе знать.
Буду дальше копать уже с вашими исходниками


----------
Thanks!
Re[13]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 23.03.10 05:43
Здравствуйте, c-smile!

Спасибо за build 3.3.2.1

Вы писали
CS>>А чем собственно fileicon не устраивает?

А я решил поступить вот так
M>Он постоянно лезет в filename и рисует.
M>Я подумал проще сделать будет (естественно в моем случае) если он будет получать HIMAGELIST hlist только при ATTACH'е
M>а далее его рисовать, когда надо

Так вот file-icon это native behavior и отрисовку он производит в draw_fireground(...)

Я же используя свой behavior для решения вышеобозначенной проблемы рисую в draw(...) подобно behavior: shell-icon;

Так вот есть у него такая проблема, что вместо иконки рисуется прозрачная "дырка" из маски иконки в окне, когда стоит стиль окна WS_EX_LAYERED (и еще в некоторых случаях)
с помощью

ImageList_Draw(hlist, sfi.iIcon, hdc, x, y, ILD_TRANSPARENT);


вернее большинство из них. Например иконки .rar , browse.exe рисуются нормально

Как вы думаете решить эту проблему? Куда копать?

PS.


При тестах отталкивался от HTMLayout примера skin.exe со стилем WS_EX_LAYERED и без него.
Также менял native behavior: file-icon; на behavior: shell-icon;


Заранее благодарю!
Re[14]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 24.03.10 03:34
+ также behavior:graphin-clock на WS_EX_LAYERED окне стрелки "проваливаются" (рисуются прозрачными) к сожалению.

Извиняюсь, конечно, за использования WS_EX_LAYERED-окон, но они очень уж красивые получаются...

Спасибо!
Re[15]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 31.03.10 06:24
Подскажите пож-та, в чем может быть проблема?
Re[14]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smile экспертhttp://terrainformatica.com
Дата: 31.03.10 18:11
Здравствуйте, maxforme, Вы писали:

M>Здравствуйте, c-smile!


M>Спасибо за build 3.3.2.1


M>Вы писали

CS>>>А чем собственно fileicon не устраивает?

M>А я решил поступить вот так

M>>Он постоянно лезет в filename и рисует.
M>>Я подумал проще сделать будет (естественно в моем случае) если он будет получать HIMAGELIST hlist только при ATTACH'е
M>>а далее его рисовать, когда надо

M>Так вот file-icon это native behavior и отрисовку он производит в draw_fireground(...)


M>Я же используя свой behavior для решения вышеобозначенной проблемы рисую в draw(...) подобно behavior: shell-icon;


Круто. Но вопрос был чем fileicon не устраивает?

M>Так вот есть у него такая проблема, что вместо иконки рисуется прозрачная "дырка" из маски иконки в окне, когда стоит стиль окна WS_EX_LAYERED (и еще в некоторых случаях)

M>с помощью

M>
M>ImageList_Draw(hlist, sfi.iIcon, hdc, x, y, ILD_TRANSPARENT); 
M>


M>вернее большинство из них. Например иконки .rar , browse.exe рисуются нормально


В случае WS_EX_LAYERED в htmlayout используется 32bpp bitmap, т.е. с альфой.
ImageList_Draw не умеет рисовать на поверхности с альфой для всех типов икон.
У меня там внутри пляски с бубном вокруг этого.
Re[15]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 01.04.10 01:43
Здравствуйте, c-smile!

Спасибо за ответ!

CS>А чем собственно fileicon не устраивает?


он постоянно при перерисовке
1. читает аттрибут filename.
2. получает аттрибуты файла file_atts = GetFileAttributesW(filename);
3. получает инфо файла, включая иконку HIMAGELIST hlist = (HIMAGELIST) SHGetFileInfo( filename, file_atts, &sfi, sizeof(SHFILEINFO), flags );
4. получает размеры size dimension(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON));
5. и размеры иконки ImageList_GetIconSize(hlist, &dimension.x, &dimension.y);
и наконец
6. рисует self->draw_image(sf,*v,self->current_style(*v)->fore_image,rc,true,&ic);

Если перерисовка вызывается очень часто, то операции 1-5 очень сильно затормаживают всё.
Я хотел для каждого dom-элемента хранить свой instance, в котором при attach'е бы осуществлялись операции 1-5, при draw только операция 6. И вся информация хранилась вплоть до detach'а

CS>В случае WS_EX_LAYERED в htmlayout используется 32bpp bitmap, т.е. с альфой.

CS>ImageList_Draw не умеет рисовать на поверхности с альфой для всех типов икон.
CS>У меня там внутри пляски с бубном вокруг этого.

Обидно, что я пока не умею так плясать с бубном...
Re[16]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 05.04.10 01:43
Здравствуйте, c-smile!

Вы случайно не AlphaBlend(...) используете?
Мне уж очень нужно сделать нормальную отрисовку
Re[16]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smile экспертhttp://terrainformatica.com
Дата: 05.04.10 04:03
Здравствуйте, maxforme, Вы писали:

M>Если перерисовка вызывается очень часто, то операции 1-5 очень сильно затормаживают всё.


Как ты это проверял?
Re[17]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 05.04.10 04:39
Здравствуйте, c-smile!

Выносил операции [1-5] в ATTACH и скорость "взлетала", т.к. при отрисовке необходимо было выполнить только ImageList_Draw ( или DrawIconEx )

у меня сейчас проблема только в том и состоит как нормально нарисовать любой HICON на WS_EX_LAYERED окне
Re[17]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 05.04.10 09:11
Нашел вот такие полезные ссылки...

http://janych.selfip.com/Examples/Delphi/Icons/
и
http://www.comprice.ru/articles/detail.php?ID=42603

Как думаете... Помогут эти статьи?
Re[18]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smile экспертhttp://terrainformatica.com
Дата: 06.04.10 14:59
Здравствуйте, maxforme, Вы писали:

M>Здравствуйте, c-smile!


M>Выносил операции [1-5] в ATTACH и скорость "взлетала", т.к. при отрисовке необходимо было выполнить только ImageList_Draw ( или DrawIconEx )


M>у меня сейчас проблема только в том и состоит как нормально нарисовать любой HICON на WS_EX_LAYERED окне


Ты можешь сравнить как это все работает с и без WS_EX_LAYERED?

Проблема в том что на WS_EX_LAYERED нет понятия частичной отрисовки — при любом даже небольшом изменении делается перерисовка всего окна.
Re[19]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 07.04.10 01:35
Здравствуйте, c-smile!

CS>Ты можешь сравнить как это все работает с и без WS_EX_LAYERED?


Проверял. Естественно без WS_EX_LAYERED всё намного лучше...

Но хотелось бы быстрее
Re[20]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: c-smile экспертhttp://terrainformatica.com
Дата: 07.04.10 18:30
Здравствуйте, maxforme, Вы писали:

M>Здравствуйте, c-smile!


CS>>Ты можешь сравнить как это все работает с и без WS_EX_LAYERED?


M>Проверял. Естественно без WS_EX_LAYERED всё намного лучше...


M>Но хотелось бы быстрее


WS_EX_LAYERED окна не предназначены для полноэкранного режима. Это как правило маленькие окна.
В W7 с этим лучше в том смысле что там WS_EX_LAYERED вообще не нужен.

Я правильно понимаю что твоя проблема собственно не в коде отрисовки икон а именно WS_EX_LAYERED?
Re[21]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 08.04.10 01:37
Здравствуйте, c-smile!

CS>WS_EX_LAYERED окна не предназначены для полноэкранного режима. Это как правило маленькие окна.

CS>В W7 с этим лучше в том смысле что там WS_EX_LAYERED вообще не нужен.

Нужно будет глянуть на реализацию в Win7

CS>Я правильно понимаю что твоя проблема собственно не в коде отрисовки икон а именно WS_EX_LAYERED?


WS_EX_LAYERED естественно проблема, что нет частичной отрисовки окна.
Но плюс к этому я хотел ускорить отрисовку икон (даже на обычном окне заметны небольшие лаги).
Просто я сейчас не знаю как нарисовать на поверхности с альфой иконку с альфой.

---

Сейчас перешел к тому, что сохраняю HICON в *.ico. И отображаю её как картинку с помощью средств HTMLayout (<img /> и/или <picture />)
Интересно, что SHGetFileInfo и ExtractAssociatedIcon не всегда возвращают иконку с альфой, а за этим надо следить.

---

Благодарю за внимание!
Re[22]: Проблема с htmlayout.dll v3.3.1.40 в избранное  новое    модер. 
От: maxforme 
Дата: 19.04.10 05:53
Здравствуйте, c-smile!

А не могли бы вы мне подсказать, как вы рисуете на поверхности с альфа-каналом изображение с альфа-каналом?

???
      gool::icon ic(hlist,sfi.iIcon,dimension);
      self->draw_image(sf,*v,self->current_style(*v)->fore_image,rc,true,&ic);


хочу всё же написать свой behavior, который будет рисовать иконы, запоминая HIMAGELIST при этом.

Заранее благодарю!