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)
185 // MSG_WM_DESTROY(OnDestroy)
186 MSG_WM_PAINT(OnPaint)
188 MSG_WM_KEYDOWN(OnKeyDown)
189 MSG_WM_SETCURSOR(OnSetCursor)
190 MESSAGE_HANDLER_EX(UM_COMMENTVIEW_SETCTRL,OnSetCtrol)
191 NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
192 NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
200 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
202 CCommentListWindow(CCommentView &self_in);
205 ///
\83f
\83X
\83g
\83\89\83N
\83^
207 ~CCommentListWindow();
213 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
\8e\9e\82Ì
\8f\88\97\9d
215 VOID OnSetProperty();
218 ///
\83X
\83N
\83\8d\81[
\83\8b\83y
\81[
\83W
\8cv
\8eZ
220 UINT_PTR CalcScrollPage(UINT_PTR nMax);
223 ///
\8ds
\82Ì
\8d\82\82³
\82ð
\96â
\82¢
\8d\87\82í
\82¹
225 VOID CalcItemHeight(CChatData &chatData);
228 ///
\91I
\91ð
\8ds
\82ð
\95\
\8e¦
232 VOID CalcChatRect(const CDC &cdc,RECT &rc,const CNLiteString &str);
235 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
239 ///
\83A
\83C
\83e
\83\80\95`
\89æ
241 VOID DrawItem(CDC &dc,const RECT &rc,const RECT *headerRect,CChatData &chatData);
244 ///
\95`
\89æ
\8d\82\82³
\82ð
\83\8a\83Z
\83b
\83g
246 VOID ResetViewSellHeight();
252 ///
\83N
\83\8a\83b
\83N
\82µ
\82½
\8ds
\82ð
\8cv
\8eZ
254 CCommentList::iterator CalcClickLine(INT_PTR height);
257 ///
\83\86\81[
\83U
\96¼
\82©
\83R
\83\81\94Ô
\8fã
\82©
\82Ì
\94»
\92è
259 BOOL IsOnNoOrUserName(UINT_PTR index,const POINT &point);
261 //
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
265 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
267 LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
270 ///
\83}
\83E
\83X
\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
272 VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
275 ///
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
280 ///
\95`
\89æ
\8f\88\97\9d
282 VOID OnPaint(HDC hdc);
285 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\83Z
\83b
\83g
\8f\88\97\9d
287 LRESULT OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam);
290 ///
\83T
\83C
\83Y
\95Ï
\8dX
292 VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
295 ///
\83}
\83E
\83X
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
297 VOID OnLButtonDblClk(UINT wParam, _WTYPES_NS::CPoint &point);
300 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
302 LRESULT OnEraseBkGnd(HDC lparam);
305 ///
\83}
\83E
\83X
\83z
\83C
\81[
\83\8b
307 LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
310 ///
\83L
\81[
\89\9f\89º
\8e\9e\82Ì
\8f\88\97\9d
312 VOID OnKeyDown(TCHAR vKey,UINT loLParam,UINT hiLParam);
315 ///
\83J
\81[
\83\
\83\8b\95Ï
\8dX
\8f\88\97\9d
317 LRESULT OnSetCursor(HWND wparam,UINT loLparam,UINT hiLparam);
320 ///
\83`
\83\83\83b
\83g
\83R
\83\93\83g
\83\8d\81[
\83\8b\92Ê
\92m
322 LRESULT OnChatControlNortify(LPNMHDR lParam);
326 LRESULT OnCalcSellSize(LPNMHDR lParam);
331 ///
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83N
\83\89\83X
333 class CCommentView:public CWindowImpl<CCommentView>{
334 friend CChatChildCtrls;
335 friend CCommentListWindow; //
\83t
\83\8c\83\93\83h
\90é
\8c¾
336 friend CChatChildCtrlsList;
337 friend CChatChildCtrls;
338 friend CChatReadEdit;
339 //
\83v
\83\89\83C
\83x
\81[
\83g
\8c^
\81E
\83N
\83\89\83X
\92è
\8b`
342 //
\83w
\83b
\83_
\81[
\8fî
\95ñ
\8ai
\94[
\97p
\83I
\83u
\83W
\83F
\83N
\83g
346 UINT_PTR *holizensize;
349 }HEADERSINFO,*LPHEADERSINFO;
356 //
\83\81\83\93\83o
\90é
\8c¾
359 CHeaderCtrl m_header; //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8b
360 CCommentListWindow m_commentListWindow; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
361 CNicoLiveStream &stream; //
\95ú
\91\97\83I
\83u
\83W
\83F
\83N
\83g
362 GeneralProperty generalProperty; //
\88ê
\94Ê
\90Ý
\92è
363 CCommentList commentlist; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
364 CommentViewProperty viewproperty; //
\95\
\8e¦
\83v
\83\8d\83p
\83e
\83B
365 HFONT hHeaderFontNew; //
\83w
\83b
\83_
\81[
\83t
\83H
\83\93\83g
366 CNicoVideoAuth &refAuth; //
\83j
\83R
\83j
\83R
\90¶
\95ú
\91\97\94F
\8fØ
\83I
\83u
\83W
\83F
\83N
\83g
\8eQ
\8fÆ
367 CChatChildCtrlsList chatChildCtrlsList;
388 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
390 CCommentView(CNicoLiveStream &stream,CNicoVideoAuth &refAuth);
393 ///
\83f
\83X
\83g
\83\89\83N
\83^
398 ///
\83E
\83B
\83\93\83h
\83E
\8dX
\90V
404 //
\83E
\83B
\83\93\83h
\83E
\83N
\83\89\83X
\90é
\8c¾
406 DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
409 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
411 BEGIN_MSG_MAP(CCommentView)
412 MSG_WM_CREATE(OnCreate)
413 MSG_WM_DESTROY(OnDestroy)
415 MSG_WM_HSCROLL(OnHScroll)
416 MSG_WM_VSCROLL(OnVScroll)
417 MESSAGE_HANDLER_EX(UM_CLICK_CHATNO,OnClickChatNo)
418 MESSAGE_HANDLER_EX(UM_CLICK_USERNAME,OnClickUserName)
419 MSG_WM_ERASEBKGND(OnEraseBkgnd)
420 NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
421 NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
425 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
427 VOID SetProperty(const CommentViewProperty &setProperty,const GeneralProperty &in_generalProperty);
430 ///
\83v
\83\8d\83p
\83e
\83B
\8eæ
\93¾
432 CommentViewProperty &GetProperty();
435 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
437 HWND Create(HWND hWndParent);
440 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8eæ
\93¾
442 UINT_PTR GetColumnHolSizeSum();
445 ///
\83j
\83R
\90¶
\82É
\90Ú
\91±
\8e\9e\82Ì
\8f\88\97\9d
450 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8e\9e\82Ì
\8f\88\97\9d
452 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
455 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8am
\92è
\8f\88\97\9d
457 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
461 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
466 ///
\83w
\83b
\83_
\92Ç
\89Á
468 VOID AddHeader(LPHEADERSINFO infos);
471 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8c\88\92è
473 VOID DecisionHorzSize();
477 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8f\88\97\9d
479 VOID ChangeSize(const SIZE& client);
481 //
\83E
\83B
\83\93\83h
\83E
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
487 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8cã
\8f\88\97\9d
489 LRESULT OnSize(UINT wParam,SIZE lParam);
494 ///
\83r
\83\85\81[
\83A
\82É
\95\
\8e¦
\82³
\82ê
\82Ä
\82¢
\82é
\83R
\83\81\94Ô
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
\8e\9e\82Ì
\8f\88\97\9d
496 LRESULT OnClickChatNo(UINT uMsg,WPARAM wParam,LPARAM lParam);
500 ///
\83r
\83\85\81[
\83A
\82É
\95\
\8e¦
\82³
\82ê
\82Ä
\82¢
\82é
\83\86\81[
\83U
\96¼
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
\8e\9e\82Ì
\8f\88\97\9d
502 LRESULT OnClickUserName(UINT uMsg,WPARAM wParam,LPARAM lParam);
506 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
\8f\88\97\9d
508 LRESULT OnEraseBkgnd(HDC wParam);
511 ///
\83E
\83B
\83\93\83h
\83E
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
516 ///
\83w
\83b
\83_
\83A
\83C
\83e
\83\80\95Ï
\8dX
\8e\9e\8f\88\97\9d
518 LRESULT OnHeaderEndTrack(LPNMHDR lParam);
522 ///
\83w
\83b
\83_
\83h
\83\89\83b
\83O
\8cã
\8f\88\97\9d
524 LRESULT OnHeaderEndDrag(LPNMHDR lParam);
529 ///
\89¡
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
531 VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
534 ///
\8fc
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
536 VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
539 ///
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
541 LRESULT OnCreate(LPCREATESTRUCT lpcs);