CCommentList::~CCommentList(){}
-INT_PTR CCommentList::GetCurSel(){
- GetCurSelFunc_t functa;
+CCommentList::iterator CCommentList::GetCurSel(){
auto end = this->end();
auto ite = this->begin();
- INT_PTR count = 0;
- for(;ite != end && ite->viewData.selectFlag == FALSE;++ite,++count);
- return ite != end ? count : ERR;
+ for(;ite != end && ite->viewData.selectFlag == FALSE;++ite);
+
+ return ite ;
}
+INT_PTR CCommentList::GetCurSelNo(){
+
+ auto end = this->end();
+ auto ite = this->begin();
+ INT_PTR no = 0;
+ for(;ite != end && ite->viewData.selectFlag == FALSE;++ite,++no);
+
+ return ite != end ? no : -1;
+
+}
+
CCommentList::iterator CCommentList::OnChatReceve(NicoLiveChat_P chatData_in, UINT_PTR commnetCountSum,CCommentListWindow &listWindow){
}
-VOID CCommentList::SetCurSel(INT_PTR cursel){
- if(cursel < 0)goto end;
+VOID CCommentList::SetCurSel(CCommentList::iterator cursel){
+
+ auto end = this->end();
+ if(cursel == end)goto end;
{
auto curselItem = this->GetCurSelItem();
- if(curselItem != this->end()){
+ if(curselItem != end){
curselItem->viewData.selectFlag = FALSE;
}
- iterator data = chatList.begin();
- std::advance(data,cursel);
- data->viewData.selectFlag = TRUE;
+
+ cursel->viewData.selectFlag = TRUE;
}
end:
return;
}
+
+ LRESULT CCommentListWindow::OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam){
+
+
+#ifdef USE_RICHEDIT
+ self.chatChildCtrlsList.ShowCntrls();
+#endif
+ dumpln(TEXT("setctrl"));
+
+ return 0;
+ }
+
VOID CCommentListWindow::OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize){
VOID CCommentListWindow::ShowCurSel(){
- INT_PTR cursel = self.commentlist.GetCurSel();
- if(cursel == CCommentList::ERR)goto end;
+ auto end = self.commentlist.end();
+ INT_PTR cursel = self.commentlist.GetCurSelNo();
+ if(cursel == -1)goto end;
SCROLLINFO vScrollInfo;
vScrollInfo.cbSize = sizeof(vScrollInfo);
vScrollInfo.fMask = SIF_ALL;
self.GetScrollInfo(SB_VERT,&vScrollInfo);
-
+
if(!(cursel >= vScrollInfo.nPos + static_cast<INT_PTR>(vScrollInfo.nPage) / 2 && cursel <= vScrollInfo.nPos + static_cast<INT_PTR>(vScrollInfo.nPage) / 2)){
self.SetScrollPos(SB_VERT,cursel - (vScrollInfo.nPage / 2));
}
return 0;
}
- INT_PTR CCommentListWindow::CalcClickLine(INT_PTR height){
- SCROLLINFO vScrollInfo = {0};
- vScrollInfo.fMask = SIF_POS;
-
- self.GetScrollInfo(SB_VERT,&vScrollInfo);
+ CCommentList::iterator CCommentListWindow::CalcClickLine(INT_PTR height){
INT_PTR heightSum = 0;
- INT_PTR lineNo = vScrollInfo.nPos;
+
CCommentList::iterator chatData = self.commentlist.GetShortCut();
- CCommentList::iterator end = self.commentlist.end();
- for(; chatData != end;++chatData){
+ CCommentList::iterator end = self.commentlist.end();
+ dumpln(TEXT("height:%d"),height);
+
+ for(; chatData != end ;(++chatData)){
CalcItemHeight(*chatData);
heightSum += chatData->viewData.height;
-
- if(heightSum >= height){
-
- goto end;
- }
-
- ++lineNo;
+ dumpln(TEXT("height:%d"),heightSum);
+
+ if(heightSum >= height)break;
}
- lineNo = -1;
-end:
+
+
- return lineNo;
+ return chatData;
}
end:
-#ifdef USE_RICHEDIT
- self.chatChildCtrlsList.ShowCntrls();
-#endif
+
+ this->SendMessage(UM_COMMENTVIEW_SETCTRL,NULL,NULL);
return;
}
if(point.x > (INT_PTR)self.GetColumnHolSizeSum()) return;
+ auto end = self.commentlist.end();
+ auto lineIte = CalcClickLine(point.y);
+ if( lineIte == end)return;
- INT_PTR lineNo = CalcClickLine(point.y);
- if(self.commentlist.empty() == TRUE || lineNo == -1)return;
-
- auto chatData = self.commentlist.GetChatAt(lineNo);
COLORREF bkColor;
- if(chatData.listenerData->originBkFlag == FALSE){
+ if(lineIte->listenerData->originBkFlag == FALSE){
CListenerColorCollector colorCollector;
listenerList.BkColorCollect(colorCollector);
UCHAR red;
}while(colorCollector.Find(bkColor));
- chatData.listenerData->originBkFlag = TRUE;
- chatData.listenerData->SetBkColor(bkColor);
+ lineIte->listenerData->originBkFlag = TRUE;
+ lineIte->listenerData->SetBkColor(bkColor);
} else {
- chatData.listenerData->originBkFlag = FALSE;
+ lineIte->listenerData->originBkFlag = FALSE;
}
this->Unlock();
}
-#ifdef USE_RICHEDIT
- self.chatChildCtrlsList.ShowCntrls();
-#endif
+ this->SendMessage(UM_COMMENTVIEW_SETCTRL,NULL,NULL);
return;
}
}
- dy += self.commentlist.GetCurSel();
+
+
+ auto cursel = self.commentlist.GetCurSel();
if(dy < 0 || dy >= static_cast<INT_PTR>(self.commentlist.Size()))goto end;
- self.commentlist.SetCurSel(dy);
+
+ std::advance(cursel,dy);
+ self.commentlist.SetCurSel(cursel);
this->ShowCurSel();
end:
MSG_WM_PAINT(OnPaint)
MSG_WM_SIZE(OnSize)
MSG_WM_KEYDOWN(OnKeyDown)
+ MESSAGE_HANDLER_EX(UM_COMMENTVIEW_SETCTRL,OnSetCtrol)
NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
END_MSG_MAP()
///
///\83N\83\8a\83b\83N\82µ\82½\8ds\82ð\8cv\8eZ
///
- INT_PTR CalcClickLine(INT_PTR height);
+ CCommentList::iterator CalcClickLine(INT_PTR height);
//\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
private:
///
VOID OnPaint(HDC hdc);
-
+ ///
+ ///\83R\83\93\83g\83\8d\81[\83\8b\83Z\83b\83g\8f\88\97\9d
+ ///
+ LRESULT OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam);
///
///\83T\83C\83Y\95Ï\8dX