OSDN Git Service

コメ番、ユーザ名リンク表示処理追加
authorqwerty2501 <riot313@gmail.com>
Fri, 3 Feb 2012 12:07:50 +0000 (21:07 +0900)
committerqwerty2501 <riot313@gmail.com>
Fri, 3 Feb 2012 12:07:50 +0000 (21:07 +0900)
nlite.suo
nlite/nlite_commentview.cpp
nlite/nlite_commentview.h

index 4752f1f..e3293b2 100644 (file)
Binary files a/nlite.suo and b/nlite.suo differ
index 5aa57bb..50acbd8 100644 (file)
@@ -410,7 +410,7 @@ namespace nlite{
 
                        if(scrollFlag == TRUE){
 
-                               this->SendMessageW(WM_VSCROLL,MAKELONG(SB_BOTTOM,0),0);
+                               this->m_commentListWindow.SendMessageW(WM_VSCROLL,MAKELONG(SB_BOTTOM,0),0);
                        }
 
                        INT_PTR itemCount = m_header.GetItemCount();
@@ -569,7 +569,9 @@ namespace nlite{
 
                if(lParam->hwndFrom == m_header.m_hWnd){
                        
-
+                       LPNMHEADER pNMHeader = (LPNMHEADER) lParam; 
+                       this->m_header.SetItem(pNMHeader->iItem,pNMHeader->pitem);
+                       
                        m_commentListWindow.Invalidate();
                        this->m_commentListWindow.SendMessage(UM_COMMENTVIEW_SETCTRL,NULL,NULL);
                        
@@ -578,8 +580,21 @@ namespace nlite{
 
                return 0;
        }
+       /*
+       LRESULT CCommentView::OnHeaderItemChanged(LPNMHDR lParam){
+
+               if(lParam->hwndFrom == m_header.m_hWnd){
+                       
 
+                       m_commentListWindow.Invalidate();
+                       this->m_commentListWindow.SendMessage(UM_COMMENTVIEW_SETCTRL,NULL,NULL);
+                       
+
+               }
 
+               return 0;
+       }
+       */
        VOID CCommentView::OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam){
 
 
@@ -1260,14 +1275,16 @@ end:
 
        BOOL CCommentListWindow::IsOnNoOrUserName(UINT_PTR index,const POINT &point){
 
-               POINT mousePoint = {0};
                RECT rc = {0};
                
                self.m_header.GetItemRect(index,&rc);
                BOOL rslt = FALSE;
 
-               
-               if((mousePoint.x >= rc.left && mousePoint.x <= rc.right) && (point.y < static_cast<INT_PTR>(viewSellHeight))){
+               //dumpln(TEXT("index:%d"),index);
+               //dumpln(TEXT("rc.left:%d"),rc.left);
+               //dumpln(TEXT("rc.right:%d"),rc.right);
+               //dumpln(TEXT("point.x:%d"),point.x);
+               if((point.x >= rc.left && point.x <= rc.right) && (point.y < static_cast<INT_PTR>(viewSellHeight))){
 
                        INT_PTR heightsum = 0;
                        auto clickData = self.commentlist.GetShortCut();
@@ -1281,15 +1298,29 @@ end:
                                        CDC cdc = this->GetDC();
                                        
                                        rc.top = heightsum -= clickData->viewData.height;
-                                       SIZE stringSize;
+                                       RECT calcRect = {0};
                                        //rc.bottom = rc.bottom;
                                        cdc.SelectFont(linkFont);
-                                       ::GetTextExtentPoint32(cdc,clickData->chatBuf,clickData->chatBuf.Length(),&stringSize);
-                                       //cdc.DrawTextW(clickData->chatBuf,clickData->chatBuf.Length(),&rc,DT_CALCRECT | DT_WORD_ELLIPSIS);
-                                       rc.bottom += stringSize.cy;
-                                       rc.right += stringSize.cx;
+                                       //::GetTextExtentPoint32(cdc,clickData->chatBuf,clickData->chatBuf.Length(),&stringSize);
+
+                                       if(index == CCommentView::USERNAME){
+                                               LPCTSTR viewStr = clickData->listenerData->userName.Length() == 0 ? clickData->listenerData->user_id : clickData->listenerData->userName;
+                                               cdc.DrawTextW(viewStr ,_tcslen(viewStr),&calcRect,DT_CALCRECT);
+                                       
+                                       } else if(index == CCommentView::NO){
+                                               TCHAR viewStr[sizeof(UINT_PTR) * 8];
+                                               _stprintf(viewStr,TEXT("%d"),clickData->no);
+                                               cdc.DrawTextW(viewStr,_tcslen(viewStr),&calcRect,DT_CALCRECT);
+
+                                       }
+                                       rc.bottom = rc.top +  calcRect.bottom - calcRect.top;
+                                       rc.right = rc.right > rc.left + calcRect.right - calcRect.left ? rc.left + calcRect.right - calcRect.left : rc.right;
+                                       
+                                       //dumpln(TEXT("stringSize.cy:%d"),stringSize.cy);
+                                       //dumpln(TEXT("stringSize.cx:%d"),stringSize.cx);
+                                       dumpln(TEXT("rc.left:%d"),rc.left);
                                        dumpln(TEXT("rc.right :%d"),rc.right);
-                                       rslt = point.y >= rc.top && point.y <= rc.bottom && point.x >= rc.left && point.x <= rc.right;
+                                       rslt = (point.y >= rc.top && point.y <= rc.bottom && point.x >= rc.left && point.x <= rc.right);
                                        
                                        break;
 
index 8d15389..f7d31c2 100644 (file)
@@ -387,7 +387,7 @@ namespace nlite{
                        MSG_WM_VSCROLL(OnVScroll)
                        MSG_WM_ERASEBKGND(OnEraseBkgnd)
                        NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK   ,OnHeaderEndTrack)
-                       NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
+                       NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG  ,OnHeaderEndDrag)
                END_MSG_MAP()
 
                ///
@@ -482,6 +482,7 @@ namespace nlite{
                LRESULT OnHeaderEndDrag(LPNMHDR lParam);
 
 
+
                ///
                ///\89¡\83X\83N\83\8d\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
                ///