Почему clistctrl не может получить сообщение WM_NCLBUTTONDOWN или UP ?
Здравствуйте, я пишу CMyListCtrl происходит от в разделе clistctrl, в NcCalcSize, я даю мой список немного места, как Северная Каролина, где я хочу, чтобы нарисовать полосы прокрутки, далее я добавляю по три сообщения обрабатывать в CMyListCtrl:
ON_WM_NCLBUTTONUP()
ON_WM_NCLBUTTONDOWN()
ON_WM_NCHITTEST()
когда я перемещаю мышь по области NC, сообщение WM_NCHITTEST получено, это правильно, но когда я щелкаю мышью по области NC, ни сообщение NCLBUTTONDWON, ни сообщение NCLBUTTONUP не могут быть получены. Я попробовал сделать это еще раз, но потерпел неудачу, так что мне нужна помощь, спасибо.
Что я уже пробовал:
void MyList::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp) { //set right area of MyList as the NC area lpncsp->rgrc[0].right -= 14; CListCtrl::OnNcCalcSize(bCalcValidRects, lpncsp); } void MyList::OnNcLButtonUp(UINT nHitTest, CPoint point) { // this message can not be received CListCtrl::OnNcLButtonUp(nHitTest, point); } LRESULT MyList::OnNcHitTest(CPoint point) { // this message can be received return CListCtrl::OnNcHitTest(point); }
Richard MacCutchan
Я не уверен, что CListCtrl имеет неклиентскую область как таковую. Сообщений WM_NCxxx, как правило, относятся к оконной раме.