OSDN Git Service

2012/01/07 21:57:42
authorqwerty2501 <riot313@gmail.com>
Sat, 7 Jan 2012 12:57:42 +0000 (21:57 +0900)
committerqwerty2501 <riot313@gmail.com>
Sat, 7 Jan 2012 12:57:42 +0000 (21:57 +0900)
nlite.suo
nlite/nlite_commentview.cpp
nlite/nlite_commentview.h
nlite/nlite_listviewex.h

index 884ef3e..3088bcc 100644 (file)
Binary files a/nlite.suo and b/nlite.suo differ
index 8b80eb3..85f3da7 100644 (file)
@@ -29,11 +29,49 @@ VOID CCommentView::OnMersureItem(LPMEASUREITEMSTRUCT lpMersureItemStruct){
        return;
 }
 
+HWND CCommentView::Create(HWND hWndParent){
 
+       HWND rslt = __super::Create(hWndParent,menuOrID);
 
+       PAINTSTRUCT ps;
+       HDC hdc = header.BeginPaint(&ps);
+       SIZE size;
 
-VOID CCommentView::OnHeaderTrack(){
+       HFONT hOld = (HFONT)SelectObject(hdc,hHeaderFontNew);
 
+       LPTSTR columns[] = {TEXT("\83R\83\81\94Ô"),TEXT("\83\86\81[\83U\81[\96¼"),TEXT("\83R\83\81\83\93\83g"),TEXT("\8e\9e\8aÔ"),TEXT("\8fî\95ñ")};
+       UINT_PTR holizenSize[] = {0,0,100,0,0};
+
+       for(UINT_PTR index = 0;index < ARRAY_LENGTH(columns) ;++index){
+
+               GetTextExtentPoint32(hdc , columns[index] , _tcslen(columns[index]) , &size);
+               UINT_PTR holsize = holizenSize[index] + size.cx + 15;
+               holizenSize[index] = viewproperty.headerholSize[index] >= 0 ? viewproperty.headerholSize[index] : holsize;
+               columnHolSizeSum += holsize > holizenSize[index] ? holsize : holizenSize[index];
+       }
+
+       SelectObject(hdc,hOld);
+
+       header.EndPaint(&ps);
+                       
+                       
+       HEADERSINFO headersinfo = {columns,holizenSize,ARRAY_LENGTH(columns)};
+
+       AddHeader(&headersinfo);
+
+               
+                       
+       
+                       
+       return rslt;
+}
+
+
+
+VOID CCommentView::OnHeaderItemChanged(){
+
+       RECT headerSizeRect;
+       header.GetClientRect(&headerSizeRect);
        
        Lock();
        
index 047c4ca..97c26a3 100644 (file)
@@ -73,6 +73,7 @@ namespace nlite{
                CPen outLinePenSelect;
                CPen colLinePen;
                
+
                enum{
                        NO,
                        USERNAME,
@@ -113,47 +114,10 @@ namespace nlite{
                                bkBurushNomal.DeleteObject();
                        }
                        bkBurushNomal.CreateSolidBrush(viewproperty.backColor);
-
-                       
-                       
-
                        return;
                }
 
-               HWND Create(HWND hWndParent){
-
-                       HWND rslt = __super::Create(hWndParent,menuOrID);
-
-                       PAINTSTRUCT ps;
-                       HDC hdc = header.BeginPaint(&ps);
-                       SIZE size;
-
-                       HFONT hOld = (HFONT)SelectObject(hdc,hHeaderFontNew);
-
-                       LPTSTR columns[] = {TEXT("\83R\83\81\94Ô"),TEXT("\83\86\81[\83U\81[\96¼"),TEXT("\83R\83\81\83\93\83g"),TEXT("\8e\9e\8aÔ"),TEXT("\8fî\95ñ")};
-                       UINT_PTR holizenSize[] = {0,0,100,0,0};
-
-                       for(UINT_PTR index = 0;index < ARRAY_LENGTH(columns) ;++index){
-
-                               GetTextExtentPoint32(hdc , columns[index] , _tcslen(columns[index]) , &size);
-                               UINT_PTR holsize = holizenSize[index] + size.cx + 15;
-                               holizenSize[index] = viewproperty.headerholSize[index] >= 0 ? viewproperty.headerholSize[index] : holsize;
-                               columnHolSizeSum += holsize > holizenSize[index] ? holsize : holizenSize[index];
-                       }
-
-                       SelectObject(hdc,hOld);
-
-                       header.EndPaint(&ps);
-                       
-                       
-                       HEADERSINFO headersinfo = {columns,holizenSize,ARRAY_LENGTH(columns)};
-
-                       AddHeader(&headersinfo);
-
-                       
-
-                       return rslt;
-               }
+               HWND Create(HWND hWndParent);
 
        public:
                UINT_PTR GetColumnHolSizeSum(){
@@ -165,9 +129,9 @@ namespace nlite{
                        commentlist.OnConnect();
                        listBox.SetRedraw(FALSE);
                        listBox.ResetContent();
-                       
                }
 
+               
 
                VOID SetStreamStatus(StreamStatus &st);
                
@@ -180,7 +144,7 @@ namespace nlite{
 
                VOID OnDrawList(LPDRAWITEMSTRUCT lpDrawItemStruct);
 
-               VOID OnHeaderTrack();
+               VOID OnHeaderItemChanged();
 
                VOID OnListBoxDoubleClick();
 
index f87216c..7ad7c6e 100644 (file)
@@ -41,13 +41,15 @@ namespace nlite{
                const UINT headerID;
                const UINT listBoxID;
                HFONT hHeaderFontNew;
+               UINT_PTR horizonSize;
                
        public:
 
                CListViewEx():
                        headerID(NLITE_HEADER_ID),
                        listBoxID(NLITE_LIST_ID),
-                       t((TBase*)this)
+                       t((TBase*)this),
+                       horizonSize(0)
                        {
 
                        LOGFONT lf = {0};
@@ -66,9 +68,6 @@ namespace nlite{
 
                }
 
-
-
-
                DECLARE_WND_CLASS(LISTVIEW_EX)
 
                //\83\81\83b\83Z\81[\83W\83}\83b\83v
@@ -79,118 +78,115 @@ namespace nlite{
                        MSG_WM_MEASUREITEM(OnMersureItem)
                        MSG_WM_SIZING(OnSizing)
                        MSG_WM_SIZE(OnSize)
+                       MSG_WM_ERASEBKGND(OnEraseBkgnd)
                        COMMAND_CODE_HANDLER_EX(LBN_DBLCLK,OnListBoxDoubleClick)
-                       NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG  ,OnHeaderEndDrag)
-                       NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
-                       
+                       NOTIFY_CODE_HANDLER_EX(HDN_ITEMCHANGED  ,OnheaderItemChanged)
+                       NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
                END_MSG_MAP()
 
+       
                        
-       //\83T\83C\83Y\95Ï\8dX\92\86
-       VOID OnSizing(UINT wParam,LPRECT lParam){
+               //\83T\83C\83Y\95Ï\8dX\92\86
+               VOID OnSizing(UINT wParam,LPRECT lParam){
 
-               RECT client;
-               GetClientRect(&client);
+                       RECT client;
+                       GetClientRect(&client);
 
-               ChangeSize( _WTYPES_NS::CSize(client.right - client.left,client.bottom - client.top));
-               return;
+                       ChangeSize( _WTYPES_NS::CSize(client.right - client.left,client.bottom - client.top));
 
-       }
-               
-       //\83T\83C\83Y\95Ï\8dX\8cã
-       LRESULT OnSize(UINT wParam,SIZE lParam){
-               ChangeSize(lParam);
-               return 0;
-       }
+                       
+                       return;
+
+               }
 
-       //\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
-       VOID ChangeSize(const SIZE& client){
+               //\83T\83C\83Y\95Ï\8dX\8cã
+               LRESULT OnSize(UINT wParam,SIZE lParam){
+                       ChangeSize(lParam);
+                       
+                       return 0;
+               }
 
-               header.MoveWindow(0 , 0,client.cx , headerHaight );
-               listBox.MoveWindow(0,headerHaight,client.cx,client.cy - headerHaight);
+               //\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
+               VOID ChangeSize(const SIZE& client){
+
+                       header.MoveWindow(0 , 0,client.cx , headerHaight );
+                       listBox.MoveWindow(0,headerHaight,client.cx,client.cy - headerHaight);
 
                
 
-               return;
-       }
+                       return;
+               }
+
+               //\83`\83\89\83c\83L\82ð\82È\82­\82·
+               LRESULT OnEraseBkgnd(HDC wParam){
 
+                       return TRUE;
+               }
                        
                        
-       VOID OnDestroy(){
-               m_hWnd;
-               header.DestroyWindow();
-               listBox.DestroyWindow();
-               return;
-
-       }
+               VOID OnDestroy(){
+                       m_hWnd;
+                       header.DestroyWindow();
+                       listBox.DestroyWindow();
+                       return;
 
+               }
 
-       LRESULT OnHeaderEndDrag(LPNMHDR lParam){
+               LRESULT OnheaderItemChanged(LPNMHDR lParam){
 
-               if(lParam->hwndFrom == header.m_hWnd){
+                       if(lParam->hwndFrom == header.m_hWnd){
 
-                       listBox.InvalidateRect(NULL,TRUE);
+                               t->OnHeaderItemChanged();
+                       }
 
+                       return 0;
                }
 
-               return 0;
-       }
+               LRESULT OnHeaderEndDrag(LPNMHDR lParam){
 
+                       if(lParam->hwndFrom == header.m_hWnd){
 
-       LRESULT OnListBoxDoubleClick(UINT uNotifyCode, int nID, CWindow wndCtl){
+                               listBox.InvalidateRect(NULL,TRUE);
 
+                       }
 
-               
-               if(wndCtl.m_hWnd == listBox.m_hWnd){
-
-                       t->OnListBoxDoubleClick();
+                       return 0;
                }
 
-               return 0;
-       }
 
-       LRESULT OnHeaderEndTrack(LPNMHDR lParam){
+               LRESULT OnListBoxDoubleClick(UINT uNotifyCode, int nID, CWindow wndCtl){
 
-               if(lParam->hwndFrom == header.m_hWnd){
 
-                       t->OnHeaderTrack();
-               }
+               
+                       if(wndCtl.m_hWnd == listBox.m_hWnd){
 
-               return 0;
+                               t->OnListBoxDoubleClick();
+                       }
+
+                       return 0;
+               }
 
-       }
                        
 
-       LRESULT OnCreate(LPCREATESTRUCT lpcs){
-               header.Create(m_hWnd,0,WC_HEADER,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN   | HDS_BUTTONS | HDS_HOTTRACK | HDS_DRAGDROP ,0,headerID);
-               listBox.Create(m_hWnd,0,WC_LISTBOX,WS_CHILD | WS_VISIBLE| WS_HSCROLL | WS_VSCROLL | WS_CLIPCHILDREN   | LBS_OWNERDRAWVARIABLE | LBS_NOTIFY | LBS_NOREDRAW  ,0,listBoxID);
-               listBox.SetFont(AtlGetDefaultGuiFont());
+               LRESULT OnCreate(LPCREATESTRUCT lpcs){
+                       header.Create(m_hWnd,0,WC_HEADER,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN   | HDS_BUTTONS | HDS_HOTTRACK | HDS_DRAGDROP ,0,headerID);
+                       listBox.Create(m_hWnd,0,WC_LISTBOX,WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_CLIPCHILDREN   | LBS_OWNERDRAWVARIABLE | LBS_NOTIFY | LBS_NOREDRAW  ,0,listBoxID);
+                       listBox.SetFont(AtlGetDefaultGuiFont());
                
-               return 0;
-       }
+                       
+                       return 0;
+               }
 
 
 
        protected:
                HWND Create(HWND hWndParent,ATL::_U_MENUorID menuOrID){
-                       
-                       HWND rslt = __super::Create(hWndParent,0,LISTVIEW_EX,WS_VISIBLE | WS_CHILD  | WS_BORDER,0,menuOrID);
 
-                       if(rslt == NULL){
-
-                               throw AppInitException(__LINE__,TEXT(__FILE__));
-                       }
-               
-                       
-                       
-                       
-                       
-                       
-                       return rslt;
+                       return __super::Create(hWndParent,0,LISTVIEW_EX,WS_VISIBLE | WS_CHILD | WS_HSCROLL | WS_BORDER,0,menuOrID);
 
                }
 
-               VOID AddHeader(LPHEADERSINFO infos){
+               UINT_PTR AddHeader(LPHEADERSINFO infos){
 
 
                        header.SetFont(hHeaderFontNew);
@@ -198,17 +194,25 @@ namespace nlite{
                        HDITEM item;
                        item.mask = HDI_FORMAT | HDI_TEXT | HDI_WIDTH;
                        item.fmt = HDF_CENTER | HDF_STRING;
-
+                       
                        for(UINT_PTR index = 0;index < infos->count ;++index){
 
                                item.pszText = infos->columns[index];
 
                                item.cxy =  infos->holizensize[index];
-
+                               horizonSize += infos->holizensize[index];
                                header.InsertItem(index,&item);
                        }
                        
+                       
+                       SCROLLINFO scrollInfo = {0};
+                       scrollInfo.fMask =  SIF_RANGE | SIF_POS;
+                       scrollInfo.nMax = horizonSize;
+       
+       
+                       this->SetScrollInfo(SB_HORZ,&scrollInfo,TRUE);  
 
+                       return horizonSize;
                }
 
                VOID OnMersureItem(UINT wParam, LPMEASUREITEMSTRUCT lParam){