У меня небольшая проблема при обработке сообщения HDN_ENDTRACKW для настраиваемого класса, производного от CListCtrl.
По сути, кажется, что когда это сообщение отправлено, фактическое значение, в котором хранится ширина столбца, не обновляется до тех пор, пока не будет выполнен мой код обработки.
Код внутри дескриптора просто указывает индикатору выполнения изменить размер, чтобы заполнить ширину измененного столбца. Код:
void ProgListCtrl::OnEndTrack(NMHDR* pNMHDR, LRESULT* pResult)
{
int width = ListView_GetColumnWidth(GetSafeHwnd(), m_nProgressColumn);
ResizeProgressbar();
}
ListView_GetColumnWidth на данный момент нужен только для помощи в отладке.
Значение по умолчанию для конкретного столбца, который я изменяю, составляет 150, когда я изменяю размер столбца в пользовательском интерфейсе, этот метод вызывается, но ширина остается той же 150, индикатор выполнения не изменяется. Только когда размер столбца снова изменяется, значение ширины теперь отражает значение столбца после первого изменения размера, затем метод ResizeProgressBar правильно изменяет размер панели управления, чтобы заполнить столбец, в котором он находится. Это непрерывно, значение ширины всегда кажется отставать от фактического значения на один шаг.
Буду признателен за любую помощь. Ваше здоровье.