ericyan11 Ответов: 0

Почему 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, как правило, относятся к оконной раме.

0 Ответов