6 class CCommentListWindow;
7 class CChatChildCtrlsList;
10 //
\92è
\90\94\97p
\82Ì
\96¼
\91O
\8bó
\8aÔ
11 namespace commentViewConstant{
13 //
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83E
\83B
\83\93\83h
\83E
\96¼
14 const static LPCTSTR NLITE_COMMENTVIEW = TEXT("NLITE_COMMENTVIEW");
16 //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
\96¼
17 const static LPCTSTR NLITE_COMMENTLISTWINDOW = TEXT("NLITE_COMMENTLISTWINDOW");
19 //
\83w
\83b
\83_
\81[
\82Ì
\8d\82\82³
20 const static UINT_PTR HEADER_HAIGHT = 20;
22 //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8bID
23 const static UINT_PTR HEADER_ID = 257;
25 //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83EID
26 const static UINT_PTR LISTWINDOW = 258;
29 const static UINT_PTR MENU_OR_ID = 256;
32 class CChatReadEdit :public CWindowImpl<CChatReadEdit,CRichEditCtrl>{
33 friend CCommentListWindow;
34 friend CChatChildCtrls;
36 CCommentView &m_master;
39 BEGIN_MSG_MAP(CChatReadEdit)
42 CChatReadEdit(CCommentView &m_master);
43 BOOL SetWindowText(const CChatData &str);
47 VOID linkStringBeside(const tstring &target,const nliteregex::tregex &re);
50 HWND GeneralCreate(HWND hParent,DWORD eventMask,UINT id);
53 class CChatChildCtrls{
54 friend CCommentListWindow;
55 friend CChatChildCtrlsList;
57 CChatReadEdit chatDispCtrl;
58 // CHyperLink noDispCtrl;
59 // CHyperLink userNameDispCtrl;
60 CCommentView &m_master;
66 NO_DIOSCTRL_ID = 10000000,
67 USERNAME_DISPCTRL_ID = 20000000,
68 CHAT_DISPCTRL_ID = 30000000
73 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
75 CChatChildCtrls(CCommentView &hMaster);
78 ///
\8ew
\92è
\82µ
\82½
\8d\82\82³
\82É
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\83Z
\83b
\83g
80 VOID SetCtrl(HDWP,const RECT &rc,CCommentList::reference commen,BOOL mulutiLineFlag);
82 VOID AdjustRect(RECT &rc);
89 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82Ì
\8cÂ
\90\94\82ð
\8eæ
\93¾
91 static UINT_PTR GetCtrlCount();
98 class CChatChildCtrlsList{
100 friend CCommentListWindow;
101 friend CChatChildCtrls;
104 typedef std::list<CChatChildCtrls> InternalList;
107 CCommentView &m_hMaster;
112 typedef InternalList::reference reference;
113 typedef InternalList::iterator iterator;
116 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
118 CChatChildCtrlsList(CCommentView &hMaster);
123 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\95\
\8e¦
128 ///
\94ñ
\95\
\8e¦
\8f\88\97\9d
135 ///
\8ag
\92£
\8f\88\97\9d
143 //
\83R
\83\81\83\93\83g
\95\
\8e¦
\97p
\83E
\83B
\83\93\83h
\83E
144 class CCommentListWindow:public CWindowImpl<CCommentListWindow>{
147 friend CChatChildCtrls;
148 friend CChatChildCtrlsList;
154 UINT_PTR viewSellHeight;
155 CPen collLinePen; //
\8d\80\96Ú
\8fc
\90ü
\95`
\89æ
\97p
\83y
\83\93
156 CPen normalSellLinePen; //
\98g
\90ü
\95`
\89æ
\97p
\83y
\83\93
157 CBrush normalBkBrush; //
\94w
\8ci
\95`
\89æ
\97p
\83u
\83\89\83V
158 CPen selectSellLinePen; //
\98g
\90ü
\95`
\89æ
\97p
\83y
\83\93
159 CBrush selectBkBrush; //
\94w
\8ci
\95`
\89æ
\97p
\83u
\83\89\83V
161 CAddToMyListWindow addToMyListWindow; //
\83}
\83C
\83\8a\83X
\83g
\93o
\98^
\97p
\83E
\83B
\83\93\83h
\83E
163 //
\83\8a\83\93\83N
\95¶
\8e\9a\97ñ
\97p
\82Ì
\83t
\83H
\83\93\83g
172 DECLARE_WND_CLASS(commentViewConstant::NLITE_COMMENTLISTWINDOW)
176 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
178 BEGIN_MSG_MAP(CCommentListWindow)
179 MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk)
180 MSG_WM_LBUTTONDOWN(OnLButtonDown)
181 MSG_WM_CREATE(OnCreate)
182 MSG_WM_ERASEBKGND(OnEraseBkGnd)
183 MSG_WM_MOUSEWHEEL(OnMouseWheel)
184 // MSG_WM_DESTROY(OnDestroy)
185 MSG_WM_PAINT(OnPaint)
187 MSG_WM_KEYDOWN(OnKeyDown)
188 MSG_WM_SETCURSOR(OnSetCursor)
189 MESSAGE_HANDLER_EX(UM_COMMENTVIEW_SETCTRL,OnSetCtrol)
190 NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
191 NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
199 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
201 CCommentListWindow(CCommentView &self_in);
204 ///
\83f
\83X
\83g
\83\89\83N
\83^
206 ~CCommentListWindow();
210 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
\8e\9e\82Ì
\8f\88\97\9d
212 VOID OnSetProperty();
215 ///
\83X
\83N
\83\8d\81[
\83\8b\83y
\81[
\83W
\8cv
\8eZ
217 UINT_PTR CalcScrollPage(UINT_PTR nMax);
220 ///
\8ds
\82Ì
\8d\82\82³
\82ð
\96â
\82¢
\8d\87\82í
\82¹
222 VOID CalcItemHeight(CChatData &chatData);
225 ///
\91I
\91ð
\8ds
\82ð
\95\
\8e¦
229 VOID CalcChatRect(const CDC &cdc,RECT &rc,const CNLiteString &str);
232 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
236 ///
\83A
\83C
\83e
\83\80\95`
\89æ
238 VOID DrawItem(CDC &dc,const RECT &rc,const RECT *headerRect,CChatData &chatData);
241 ///
\95`
\89æ
\8d\82\82³
\82ð
\83\8a\83Z
\83b
\83g
243 VOID ResetViewSellHeight();
249 ///
\83N
\83\8a\83b
\83N
\82µ
\82½
\8ds
\82ð
\8cv
\8eZ
251 CCommentList::iterator CalcClickLine(INT_PTR height);
254 ///
\83\86\81[
\83U
\96¼
\82©
\83R
\83\81\94Ô
\8fã
\82©
\82Ì
\94»
\92è
256 BOOL IsOnNoOrUserName(UINT_PTR index,const POINT &point);
258 //
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
262 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
264 LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
267 ///
\83}
\83E
\83X
\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
269 VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
272 ///
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
277 ///
\95`
\89æ
\8f\88\97\9d
279 VOID OnPaint(HDC hdc);
282 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\83Z
\83b
\83g
\8f\88\97\9d
284 LRESULT OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam);
287 ///
\83T
\83C
\83Y
\95Ï
\8dX
289 VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
292 ///
\83}
\83E
\83X
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
294 VOID OnLButtonDblClk(UINT wParam, _WTYPES_NS::CPoint &point);
297 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
299 LRESULT OnEraseBkGnd(HDC lparam);
302 ///
\83}
\83E
\83X
\83z
\83C
\81[
\83\8b
304 LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
307 ///
\83L
\81[
\89\9f\89º
\8e\9e\82Ì
\8f\88\97\9d
309 VOID OnKeyDown(TCHAR vKey,UINT loLParam,UINT hiLParam);
312 ///
\83J
\81[
\83\
\83\8b\95Ï
\8dX
\8f\88\97\9d
314 LRESULT OnSetCursor(HWND wparam,UINT loLparam,UINT hiLparam);
317 ///
\83`
\83\83\83b
\83g
\83R
\83\93\83g
\83\8d\81[
\83\8b\92Ê
\92m
319 LRESULT OnChatControlNortify(LPNMHDR lParam);
321 LRESULT OnCalcSellSize(LPNMHDR lParam);
326 ///
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83N
\83\89\83X
328 class CCommentView:public CWindowImpl<CCommentView>{
329 friend CChatChildCtrls;
330 friend CCommentListWindow; //
\83t
\83\8c\83\93\83h
\90é
\8c¾
331 friend CChatChildCtrlsList;
332 friend CChatChildCtrls;
333 friend CChatReadEdit;
334 //
\83v
\83\89\83C
\83x
\81[
\83g
\8c^
\81E
\83N
\83\89\83X
\92è
\8b`
337 //
\83w
\83b
\83_
\81[
\8fî
\95ñ
\8ai
\94[
\97p
\83I
\83u
\83W
\83F
\83N
\83g
341 UINT_PTR *holizensize;
344 }HEADERSINFO,*LPHEADERSINFO;
351 //
\83\81\83\93\83o
\90é
\8c¾
354 CHeaderCtrl m_header; //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8b
355 CCommentListWindow m_commentListWindow; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
356 CNicoLiveStream &stream; //
\95ú
\91\97\83I
\83u
\83W
\83F
\83N
\83g
357 GeneralProperty generalProperty; //
\88ê
\94Ê
\90Ý
\92è
358 CCommentList commentlist; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
359 CommentViewProperty viewproperty; //
\95\
\8e¦
\83v
\83\8d\83p
\83e
\83B
360 HFONT hHeaderFontNew; //
\83w
\83b
\83_
\81[
\83t
\83H
\83\93\83g
361 CNicoVideoAuth &refAuth; //
\83j
\83R
\83j
\83R
\90¶
\95ú
\91\97\94F
\8fØ
\83I
\83u
\83W
\83F
\83N
\83g
\8eQ
\8fÆ
363 CChatChildCtrlsList chatChildCtrlsList;
384 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
386 CCommentView(CNicoLiveStream &stream,CNicoVideoAuth &refAuth);
389 ///
\83f
\83X
\83g
\83\89\83N
\83^
396 //
\83E
\83B
\83\93\83h
\83E
\83N
\83\89\83X
\90é
\8c¾
398 DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
401 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
403 BEGIN_MSG_MAP(CCommentView)
404 MSG_WM_CREATE(OnCreate)
405 MSG_WM_DESTROY(OnDestroy)
407 MSG_WM_HSCROLL(OnHScroll)
408 MSG_WM_VSCROLL(OnVScroll)
409 MSG_WM_ERASEBKGND(OnEraseBkgnd)
410 NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
411 NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
415 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
417 VOID SetProperty(const CommentViewProperty &setProperty,const GeneralProperty &in_generalProperty);
420 ///
\83v
\83\8d\83p
\83e
\83B
\8eæ
\93¾
422 CommentViewProperty &GetProperty();
425 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
427 HWND Create(HWND hWndParent);
430 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8eæ
\93¾
432 UINT_PTR GetColumnHolSizeSum();
435 ///
\83j
\83R
\90¶
\82É
\90Ú
\91±
\8e\9e\82Ì
\8f\88\97\9d
440 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8e\9e\82Ì
\8f\88\97\9d
442 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
445 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8am
\92è
\8f\88\97\9d
447 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
451 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
456 ///
\83w
\83b
\83_
\92Ç
\89Á
458 VOID AddHeader(LPHEADERSINFO infos);
461 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8c\88\92è
463 VOID DecisionHorzSize();
467 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8f\88\97\9d
469 VOID ChangeSize(const SIZE& client);
471 //
\83E
\83B
\83\93\83h
\83E
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
477 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8cã
\8f\88\97\9d
479 LRESULT OnSize(UINT wParam,SIZE lParam);
485 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
\8f\88\97\9d
487 LRESULT OnEraseBkgnd(HDC wParam);
490 ///
\83E
\83B
\83\93\83h
\83E
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
495 ///
\83w
\83b
\83_
\83A
\83C
\83e
\83\80\95Ï
\8dX
\8e\9e\8f\88\97\9d
497 LRESULT OnHeaderEndTrack(LPNMHDR lParam);
501 ///
\83w
\83b
\83_
\83h
\83\89\83b
\83O
\8cã
\8f\88\97\9d
503 LRESULT OnHeaderEndDrag(LPNMHDR lParam);
508 ///
\89¡
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
510 VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
513 ///
\8fc
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
515 VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
518 ///
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
520 LRESULT OnCreate(LPCREATESTRUCT lpcs);