void CCandidateWindow::_OnLButtonDown(POINT pt) { RECT rcWindow = {0, 0, 0, 0};; _GetClientRect(&rcWindow); int cyLine = _cyRow; UINT index = 0; int currentPage = _CandidateIndexToPageNumber(_currentSelection); // Hit test on list items index = _PageNumberToCandidateIndex(currentPage); for (UINT pageCount = 0; (index < _candidateList.size()) && (pageCount < _numCandidatesPerPage); index++, pageCount++) { RECT rc = {0, 0, 0, 0}; rc.left = rcWindow.left; rc.right = rcWindow.right - GetSystemMetrics(SM_CXVSCROLL) * 2; rc.top = rcWindow.top + (pageCount * cyLine); rc.bottom = rcWindow.top + ((pageCount + 1) * cyLine); if (PtInRect(&rc, pt) && _pfnCallback) { SetCursor(LoadCursor(NULL, IDC_HAND)); _currentSelection = index; _pfnCallback(_pObj, CAND_ITEM_SELECT); return; } } SetCursor(LoadCursor(NULL, IDC_ARROW)); }
void CCandidateWindow::_OnLButtonDown(POINT pt) { RECT rcWindow = {0, 0, 0, 0};; _GetClientRect(&rcWindow); int cyLine = _cyRow; UINT candidateListPageCnt = _pIndexRange->Count(); UINT index = 0; int currentPage = 0; if (FAILED(_GetCurrentPage(¤tPage))) { return; } // Hit test on list items index = *_PageIndex.GetAt(currentPage); for (UINT pageCount = 0; (index < _candidateList.Count()) && (pageCount < candidateListPageCnt); index++, pageCount++) { RECT rc = {0, 0, 0, 0}; rc.left = rcWindow.left; rc.right = rcWindow.right - GetSystemMetrics(SM_CXVSCROLL) * 2; rc.top = rcWindow.top + (pageCount * cyLine); rc.bottom = rcWindow.top + ((pageCount + 1) * cyLine); if (PtInRect(&rc, pt) && _pfnCallback) { SetCursor(LoadCursor(NULL, IDC_HAND)); _currentSelection = index; _pfnCallback(_pObj, CAND_ITEM_SELECT); return; } } SetCursor(LoadCursor(NULL, IDC_ARROW)); if (_pVScrollBarWnd) { RECT rc = {0, 0, 0, 0}; _pVScrollBarWnd->_GetClientRect(&rc); MapWindowPoints(_GetWnd(), _pVScrollBarWnd->_GetWnd(), &pt, 1); if (PtInRect(&rc, pt)) { _pVScrollBarWnd->_OnLButtonDown(pt); } } }
STDAPI CCompartmentEventSink::OnChange(_In_ REFGUID guidCompartment) { return _pfnCallback(_pv, guidCompartment); }