У меня проблема в Vista с элементом управления Listview, в частности, установка пользовательских значков в заголовке. Обычно под XP или любой другой из предыдущих версий Windows, если бы я добавил значок (на C ++), я мог бы сделать это с помощью следующего:
HeaderItem.mask = HDI_FORMAT | HDI_IMAGE;
Header_GetItem(HeaderHWND, Column, &HeaderItem);
TurnOn(HeaderItem.fmt, HDF_IMAGE);
HeaderItem.iImage = Image;
if (Header_SetItem(HeaderHWND, Column, &HeaderItem) == 0)
printf("Failed to set header [%d:%.8X]\n", GetLastError(), GetLastError());
и затем для удаления изображения в определенном столбце я мог бы использовать тот же процесс, но вместо того, чтобы включить бит HDF_IMAGE, вы просто выключаете его.
Однако в Vista, когда я ее выключаю, кажется, что изменения не принимаются. Так, например, когда я запускаю мой fmt:
0x4000 (или в основном HDF_STRING)
Я включаю значок, и он становится:
0x5800 (или в основном HDF_STRING | HDF_IMAGE | HDF_BITMAP_ON_RIGHT)
Затем я снова выключаю его, но результат:
0x4800 (или в основном HDF_STRING | HDF_IMAGE)
Я проверил и установил только HDF_STRING, но после установки HDF_IMAGE его невозможно удалить. Header_SetImage не возвращает никаких ошибок, так что я не знаю, что делать. Я также попытался удалить список изображений из элемента управления, но он все еще оставляет пространство, как будто там все еще было изображение.
В конце дня мне нужно иметь возможность добавлять и удалять значки из заголовка, а когда они удаляются, мне снова нужно все пространство заголовка (как оно было до того, как оно появилось. Любая помощь будет очень полезна). оценил - спасибо заранее!