2016-07-01 4 views
-1

, если создать WC_LISTVIEW с использованием стиля LVS_REPORT и установить как списки LVSIL_SMALL, так и LVSIL_STATE (или с LVS_EX_CHECKBOXES), а количество мелких изображений меньше, чем изображение государственных изображений - неправильно отображен список: маленькие изображения, не центрированные по Y, но на той же линии с изображения состояний и нижние строки (точно CY_state - CY_small) заполняются корзиной. например, на дисплее с высоким разрешением DPI, ListView с LVS_EX_CHECKBOXES использует 20-пиксельную вершину для CY_state, если использовать 15-пиксельные маленькие значки - будет следующее изображение (левая сторона изображения). если изображение изменения состояния достигнет < = CY_small будет отображаться в нормальном режиме (правая сторона изображения) Это известная ошибка? или существуют способы решить это? enter image description hereЯвляется ли это ошибкой ListView?

ответ

0

Да, это ошибка ListView - присутствует во всех версиях Windows, включая последние сборки win10.

ошибка в функции

INT CLVView :: ComputeCYItemSize()

здесь есть следующий код:

int CLVView::ComputeCYItemSize() // this -> CLVReportView 
{ 
    // CListView* _pListView; 
    CLVImageListManager* p = _pListView->_pImageListManager; 
    ... 
    if (p->_himlState) 
    { 
     p->_cySmall = max(p->_cyState, p->_cySmall);// bug !! need remove this line 
    ... 
    } 
    ... 
} 

если 'NOP'

p- > _cySmall = max (p -> _ cyState, p -> _ cySma LL)

под отладчиком - все начинают работать нормально, и иметь следующий вид:

enter image description here

Смежные вопросы