collapsible_list тормозит
От: TarasKo Голландия  
Дата: 18.10.10 15:01
Оценка:
Здравствуйте. Пытаюсь отрисовать красивый попап в котором есть collapsible_list. Когда я открываю свой html в HTML Browse, то он отображает его прекрасно и сворачивание и разворачивание работает быстро и хорошо. Однако в моём приложении сворачивание/разворачивание работает в разы медленее и тормозит.

Цикл сообщений такой


  while( GetMessage( &msg, NULL, 0, 0 ) ) {
    htmlayout::queue::execute();

    TranslateMessage(&msg);
    DispatchMessageW(&msg);
  }


Окно создаётся со стилями
hwnd_ = CreateWindowExW( WS_EX_LAYERED, CLASSNAME, NULL, WS_POPUP,
rc.right-500, 0, 500, rc.bottom, NULL, NULL, NULL, NULL);

Сам html приводить не буду он достаточно большой

Смотрел сообщения которые получает окно с HTML в браузере и в моём приложении и обратил внимание на следующее. Когда список сворачивается/разворачивается

В браузере
<02945> 00051794 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<02946> 00051794 S WM_NCHITTEST xPos:850 yPos:571
<02947> 00051794 R WM_NCHITTEST nHittest:HTCLIENT
<02948> 00051794 S WM_PAINT hdc:00000000
<02949> 00051794 R WM_PAINT
<02950> 00051794 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<02951> 00051794 P WM_TIMER wTimerID:-84 tmprc:1000819C
<02952> 00051794 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<02953> 00051794 S WM_PAINT hdc:00000000
<02954> 00051794 R WM_PAINT
<02955> 00051794 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<02956> 00051794 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<02957> 00051794 S WM_PAINT hdc:00000000


В моём приложении

<00244> 001718B2 S WM_PAINT hdc:00000000
<00245> 001718B2 R WM_PAINT
<00246> 001718B2 S WM_PAINT hdc:00000000
<00247> 001718B2 R WM_PAINT
<00248> 001718B2 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<00249> 001718B2 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<00250> 001718B2 S WM_PAINT hdc:00000000
<00251> 001718B2 R WM_PAINT
<00252> 001718B2 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<00253> 001718B2 P message:0x04AD [User-defined:WM_USER+173] wParam:00000000 lParam:00000000
<00254> 001718B2 P message:0x04AD [User-defined:WM_USER+173] wParam:00000000 lParam:00000000
<00255> 001718B2 P message:0x04AD [User-defined:WM_USER+173] wParam:00000000 lParam:00000000
<00256> 001718B2 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<00257> 001718B2 S WM_PAINT hdc:00000000
<00258> 001718B2 R WM_PAINT
<00259> 001718B2 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<00260> 001718B2 P message:0x04AD [User-defined:WM_USER+173] wParam:00000000 lParam:00000000
<00261> 001718B2 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<00262> 001718B2 S WM_PAINT hdc:00000000
<00263> 001718B2 R WM_PAINT
<00264> 001718B2 R message:0x04AE [User-defined:WM_USER+174] lResult:00000000
<00265> 001718B2 P message:0x04AD [User-defined:WM_USER+173] wParam:00000000 lParam:00000000
<00266> 001718B2 S message:0x04AE [User-defined:WM_USER+174] wParam:00000000 lParam:00000000
<00267> 001718B2 S WM_PAINT hdc:00000000
<00268> 001718B2 R WM_PAINT


Разница в том что в моё приложении постоянно прилетает и обрабатывается WM_USER+173. Что это за сообщение и как от него можно избавиться? И в чём может быть причина если не в нём?
Re: collapsible_list тормозит
От: c-smile Канада http://terrainformatica.com
Дата: 18.10.10 20:13
Оценка: 2 (1)
Здравствуйте, TarasKo, Вы писали:

TK>Здравствуйте. Пытаюсь отрисовать красивый попап в котором есть collapsible_list. Когда я открываю свой html в HTML Browse, то он отображает его прекрасно и сворачивание и разворачивание работает быстро и хорошо. Однако в моём приложении сворачивание/разворачивание работает в разы медленее и тормозит.


WM_USER+173 это мое внутреннее сообщение WM_UPDATE_LAYERED_WINDOW которое генерируется
на WS_EX_LAYERED окнах.

Архитектура WS_EX_LAYERED окон в Windows не предусматривает partial update (как минимум на XP) поотму на любой чих перерисовывается окно полностью. И кстати не только оно одно, а все под ним. Т.е. анимация на layered windows есть весьма дорогостоящий эффект.
Т.е. если можно рекомендую рассмотреть возможность не использовать WS_EX_LAYERED.
Re[2]: collapsible_list тормозит
От: TarasKo Голландия  
Дата: 19.10.10 08:00
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, TarasKo, Вы писали:


TK>>Здравствуйте. Пытаюсь отрисовать красивый попап в котором есть collapsible_list. Когда я открываю свой html в HTML Browse, то он отображает его прекрасно и сворачивание и разворачивание работает быстро и хорошо. Однако в моём приложении сворачивание/разворачивание работает в разы медленее и тормозит.


CS>WM_USER+173 это мое внутреннее сообщение WM_UPDATE_LAYERED_WINDOW которое генерируется

CS>на WS_EX_LAYERED окнах.

CS>Архитектура WS_EX_LAYERED окон в Windows не предусматривает partial update (как минимум на XP) поотму на любой чих перерисовывается окно полностью. И кстати не только оно одно, а все под ним. Т.е. анимация на layered windows есть весьма дорогостоящий эффект.

CS>Т.е. если можно рекомендую рассмотреть возможность не использовать WS_EX_LAYERED.

Спасибо.
Re[2]: collapsible_list тормозит
От: Аноним  
Дата: 21.10.10 02:10
Оценка:
Здравствуйте, c-smile!

CS>Архитектура WS_EX_LAYERED окон в Windows не предусматривает partial update (как минимум на XP) поотму на любой чих перерисовывается окно полностью.


А на Win7 есть возможность такое осуществить (с partial update )?
Re[3]: collapsible_list тормозит
От: Аноним  
Дата: 21.10.10 06:21
Оценка:
Здравствуйте, Аноним, Вы писали:

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


CS>>Архитектура WS_EX_LAYERED окон в Windows не предусматривает partial update (как минимум на XP) поотму на любой чих перерисовывается окно полностью.


А>А на Win7 есть возможность такое осуществить (с partial update )?


Да. На Win7 будет partial update. Правда не полностью. Но будет быстрее это точно.
Re[4]: collapsible_list тормозит
От: c-smile Канада http://terrainformatica.com
Дата: 21.10.10 06:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Да. На Win7 будет partial update. Правда не полностью. Но будет быстрее это точно.


Что такое нонче будет "partial update не полностью" ?
Re[5]: collapsible_list тормозит
От: Аноним  
Дата: 22.10.10 06:34
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Аноним, Вы писали:


А>>Да. На Win7 будет partial update. Правда не полностью. Но будет быстрее это точно.


CS>Что такое нонче будет "partial update не полностью" ?


Не помню уже подробностей, то ли htmlayout целиком рендерит всю страницу и потом кусок выбрасывает на экран, то ли наоборот — рендерит кусок а выбрасывает на экран весь буфер. Может ты окажешься более удачным, у меня не получилось

Дима.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.