Определение размера столбца CListCtrl - PullRequest
2 голосов
/ 14 июня 2019

У меня довольно простой диалог, содержащий в основном CListCtrl в режиме отчета с несколькими столбцами и с заголовком.

Теперь мне нужно определить, когда пользователь изменил размер столбца, и я надеялся, что OnHdnChanged будет вызываться каждый раз, когда пользователь изменяет размер столбца.

Среди других я имею это в своей карте сообщений, IDC_LIST1 - это идентификатор элемента управления списком.

ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList)
ON_NOTIFY(HDN_ENDTRACKW, IDC_LIST1, OnHdnChanged)

OnHdnChanged функция:

void CMyDlg::OnHdnChanged(NMHDR* pNMHDR, LRESULT* pResult)
{
  ...
  *pResult = 0;
}

void CSanDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
  ...

OnItemchangedList вызывается, когда ожидается, но OnHdnChanged - нет.Я предположил, что OnHdnChanged не вызывается, потому что родительский элемент управления заголовка - это не мой диалог, а элемент управления списком.

Кто-нибудь знает, что я могу сделать?

1 Ответ

3 голосов
/ 14 июня 2019

Я только что посмотрел на эту старую статью , в которой предлагается изменить ON_NOTIFY на ON_NOTIFY(HDN_ENDTRACKW, 0, OnHdnChanged), поскольку идентификатор элемента управления заголовка, кажется, всегда равен 0.

Не знаю, правда ли это, но стоит проверить.


Редактировать: Обновление на основе ответа на комментарий. Вот еще одно предложение, с которым я столкнулся: подкласс CListCtrl и обработка там уведомления. Предположительно, этот обработчик мог делегировать реальную логику обработки своему родителю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...