OSDN Git Service

6575ba8c90485fdd7fa3e3d51702b90542106851
[nlite/nlite.git] / nlite / nlite_commentview.h
1 #pragma once
2
3 namespace nlite{
4
5         //\92è\90\94\97p\82Ì\96¼\91O\8bó\8aÔ
6         namespace commentViewConstant{
7
8                 //\83R\83\81\83\93\83g\83r\83\85\81[\83E\83B\83\93\83h\83E\96¼
9                 const static LPCTSTR  NLITE_COMMENTVIEW = TEXT("NLITE_COMMENTVIEW");
10
11                 //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83E\96¼
12                 const static LPCTSTR NLITE_COMMENTLISTWINDOW = TEXT("NLITE_COMMENTLISTWINDOW");
13
14                 //\83w\83b\83_\81[\82Ì\8d\82\82³
15                 const static UINT_PTR HEADER_HAIGHT = 20;
16
17                 //\83w\83b\83_\81[\83R\83\93\83g\83\8d\81[\83\8bID
18                 const static UINT_PTR HEADER_ID = 257;
19
20                 //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83EID
21                 const static UINT_PTR LISTWINDOW = 258;
22
23                 //baseWindowID
24                 const static UINT_PTR MENU_OR_ID = 256;
25         }
26
27         class CCommentView;
28         //\83R\83\81\83\93\83g\95\\8e¦\97p\83E\83B\83\93\83h\83E
29         class CCommentListWindow:public CWindowImpl<CCommentListWindow>,public CComAutoCriticalSection{
30
31                 friend CCommentView;
32
33                 
34                 //\83\81\83\93\83o
35         private:
36                 CCommentView &self;
37                 
38                 
39
40         public:
41
42                 DECLARE_WND_CLASS(commentViewConstant::NLITE_COMMENTLISTWINDOW)
43
44
45                 //
46                 //\83\81\83b\83Z\81[\83W\83}\83b\83v
47                 //
48                 BEGIN_MSG_MAP(CCommentListWindow)
49                         MSG_WM_LBUTTONDBLCLK(OnLButtonDbClk)
50                         MSG_WM_LBUTTONDOWN(OnLButtonDown)
51                         MSG_WM_CREATE(OnCreate)
52                         MSG_WM_ERASEBKGND(OnEraseBkGnd)
53                         MSG_WM_MOUSEWHEEL(OnMouseWheel)
54                         MSG_WM_PAINT(OnPaint)
55                         MSG_WM_SIZE(OnSize)
56                 END_MSG_MAP()
57
58
59
60         public:
61
62                 ///
63                 ///\83R\83\93\83X\83g\83\89\83N\83^
64                 ///
65                 CCommentListWindow(CCommentView &self_in);
66
67                 ///
68                 ///\83f\83X\83g\83\89\83N\83^
69                 ///
70                 ~CCommentListWindow();
71
72
73                 ///
74                 ///\83X\83N\83\8d\81[\83\8b\83y\81[\83W\8cv\8eZ
75                 ///
76                 UINT_PTR CalcScrollPage(UINT_PTR nMax);
77
78                 ///
79                 ///\8ds\82Ì\8d\82\82³\82ð\96â\82¢\8d\87\82í\82¹
80                 ///
81                 UINT_PTR CalcItemHeight(CChatData &chatData);
82                 
83
84                 //\83v\83\89\83C\83x\81[\83g\8aÖ\90\94
85         private:
86
87                 ///
88                 ///\83A\83C\83e\83\80\95`\89æ
89                 ///
90                 VOID DrawItem(CDC &dc,RECT &rc,CChatData &chatData);
91
92
93                 
94
95                 ///
96                 ///\83N\83\8a\83b\83N\82µ\82½\8ds\82ð\8cv\8eZ
97                 ///
98                 INT_PTR CalcClickLine(INT_PTR height);
99
100                 //\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
101         private:
102                 
103                 ///
104                 ///\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
105                 ///
106                 LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
107
108                 ///
109                 ///\83}\83E\83X\83N\83\8a\83b\83N\8e\9e\82Ì\8f\88\97\9d
110                 ///
111                 VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
112
113                 ///
114                 ///\95`\89æ\8f\88\97\9d
115                 ///
116                 VOID OnPaint(HDC hdc);
117
118
119                 ///
120                 ///\83T\83C\83Y\95Ï\8dX
121                 ///
122                 VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
123
124                 ///
125                 ///\83}\83E\83X\83_\83u\83\8b\83N\83\8a\83b\83N\8e\9e\82Ì\8f\88\97\9d
126                 ///
127                 VOID OnLButtonDbClk(UINT wParam, _WTYPES_NS::CPoint &point);
128
129                 ///
130                 ///\94w\8ci\93h\82è\82Â\82Ô\82µ
131                 ///
132                 LRESULT OnEraseBkGnd(HDC lparam);
133
134                 ///
135                 ///\83}\83E\83X\83z\83C\81[\83\8b
136                 ///
137                 LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
138                 
139         };
140         
141         ///
142         ///\83R\83\81\83\93\83g\83r\83\85\81[\83N\83\89\83X
143         ///
144         class CCommentView:public CWindowImpl<CCommentView>{
145
146                 friend CCommentListWindow;                                              //\83t\83\8c\83\93\83h\90é\8c¾
147                 //\83v\83\89\83C\83x\81[\83g\8c^\81E\83N\83\89\83X\92è\8b`
148         private:
149
150                 //\83w\83b\83_\81[\8fî\95ñ\8ai\94[\97p\83I\83u\83W\83F\83N\83g
151                 typedef struct{
152
153                         LPTSTR *columns;
154                         UINT_PTR *holizensize;
155                         UINT_PTR count;
156
157                 }HEADERSINFO,*LPHEADERSINFO;
158
159                 
160                 
161
162                 
163
164                 //\83\81\83\93\83o\90é\8c¾
165         private:
166
167                 CHeaderCtrl m_header;                                           //\83w\83b\83_\81[\83R\83\93\83g\83\8d\81[\83\8b
168                 CCommentListWindow  m_commentListWindow;        //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83E
169                 CNicoLiveStream &stream;                                //\95ú\91\97\83I\83u\83W\83F\83N\83g
170                 CCommentList commentlist;                                       //\83R\83\81\83\93\83g\83\8a\83X\83g
171                 CommentViewProperty viewproperty;                       //\95\\8e¦\83v\83\8d\83p\83e\83B
172                 HFONT hHeaderFontNew;                                           //\83w\83b\83_\81[\83t\83H\83\93\83g
173
174                 
175
176
177                 
178                 
179
180                 
181         public:
182
183                 enum{
184                         NO,
185                         USERNAME,
186                         COMMENT,
187                         TIME,
188                         INFO
189
190                 };
191                 
192                 ///
193                 ///\83R\83\93\83X\83g\83\89\83N\83^
194                 ///
195                 CCommentView(CNicoLiveStream &stream);
196                 
197                 ///
198                 ///\83f\83X\83g\83\89\83N\83^
199                 ///
200                 ~CCommentView();
201
202                 
203
204                 //
205                 //\83E\83B\83\93\83h\83E\83N\83\89\83X\90é\8c¾
206                 //
207                 DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
208                 
209                 //
210                 //\83\81\83b\83Z\81[\83W\83}\83b\83v
211                 //
212                 BEGIN_MSG_MAP(CCommentView)
213                         MSG_WM_CREATE(OnCreate)
214                         MSG_WM_DESTROY(OnDestroy)                       
215                         MSG_WM_SIZE(OnSize)
216                         MSG_WM_HSCROLL(OnHScroll)
217                         MSG_WM_VSCROLL(OnVScroll)
218                         MSG_WM_ERASEBKGND(OnEraseBkgnd)
219                         NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK   ,OnHeaderEndTrack)
220                         NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
221                 END_MSG_MAP()
222
223                 ///
224                 ///\83v\83\8d\83p\83e\83B\90Ý\92è
225                 ///
226                 VOID SetProperty(CommentViewProperty &setProperty);
227
228                 ///
229                 ///\83v\83\8d\83p\83e\83B\8eæ\93¾
230                 ///
231                 CommentViewProperty &GetProperty();
232                 
233                 ///
234                 ///\83E\83B\83\93\83h\83E\8dì\90¬
235                 ///
236                 HWND Create(HWND hWndParent);
237
238                 ///
239                 ///\83w\83b\83_\82Ì\89¡\95\9d\8eæ\93¾
240                 ///
241                 UINT_PTR GetColumnHolSizeSum();
242
243                 ///
244                 ///\83j\83R\90\82É\90Ú\91±\8e\9e\82Ì\8f\88\97\9d
245                 ///
246                 VOID OnConnect();
247
248                 ///
249                 ///\83j\83R\90\82Ì\83X\83e\81[\83^\83X\90Ý\92è
250                 ///
251                 VOID SetStreamStatus(CNicoLiveStream &stream);
252
253                 ///
254                 ///\83`\83\83\83b\83g\83R\83\81\83\93\83g\8eó\90M\8e\9e\82Ì\8f\88\97\9d
255                 ///
256                 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
257
258                 ///
259                 ///\83`\83\83\83b\83g\83R\83\81\83\93\83g\8eó\90M\8am\92è\8f\88\97\9d
260                 ///
261                 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
262                 
263
264
265                 //\83v\83\89\83C\83x\81[\83g\8aÖ\90\94
266         private:
267
268
269                 ///
270                 ///\83w\83b\83_\92Ç\89Á
271                 ///
272                 VOID AddHeader(LPHEADERSINFO infos);
273                 
274                 ///
275                 ///\83w\83b\83_\82Ì\89¡\95\9d\8c\88\92è
276                 ///
277                 VOID DecisionHorzSize();
278
279
280                 ///
281                 ///\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
282                 ///
283                 VOID ChangeSize(const SIZE& client);
284
285                 //\83E\83B\83\93\83h\83E\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
286         private:
287
288                 
289
290                 ///
291                 ///\83T\83C\83Y\95Ï\8dX\8cã\8f\88\97\9d
292                 ///
293                 LRESULT OnSize(UINT wParam,SIZE lParam);
294
295                 
296                 
297
298                 ///
299                 ///\94w\8ci\93h\82è\82Â\82Ô\82µ\8f\88\97\9d
300                 ///
301                 LRESULT OnEraseBkgnd(HDC wParam);
302                 
303                 ///
304                 ///\83E\83B\83\93\83h\83E\94j\8aü\8e\9e\82Ì\8f\88\97\9d
305                 ///
306                 VOID OnDestroy();
307                 
308                 ///
309                 ///\83w\83b\83_\83A\83C\83e\83\80\95Ï\8dX\8e\9e\8f\88\97\9d
310                 ///
311                 LRESULT OnHeaderEndTrack(LPNMHDR lParam);
312
313
314                 ///
315                 ///\83w\83b\83_\83h\83\89\83b\83O\8cã\8f\88\97\9d
316                 ///
317                 LRESULT OnHeaderEndDrag(LPNMHDR lParam);
318
319
320                 ///
321                 ///\89¡\83X\83N\83\8d\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
322                 ///
323                 VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
324                 
325                 ///
326                 ///\8fc\83X\83N\83\8d\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
327                 ///
328                 VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
329
330                 ///
331                 ///\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
332                 ///
333                 LRESULT OnCreate(LPCREATESTRUCT lpcs);
334                 
335                 
336                 
337                 
338                 
339
340
341         };
342         
343 }