6 class CCommentListWindow;
7 class CChatChildCtrlsList;
9 //
\92è
\90\94\97p
\82Ì
\96¼
\91O
\8bó
\8aÔ
10 namespace commentViewConstant{
12 //
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83E
\83B
\83\93\83h
\83E
\96¼
13 const static LPCTSTR NLITE_COMMENTVIEW = TEXT("NLITE_COMMENTVIEW");
15 //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
\96¼
16 const static LPCTSTR NLITE_COMMENTLISTWINDOW = TEXT("NLITE_COMMENTLISTWINDOW");
18 //
\83w
\83b
\83_
\81[
\82Ì
\8d\82\82³
19 const static UINT_PTR HEADER_HAIGHT = 20;
21 //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8bID
22 const static UINT_PTR HEADER_ID = 257;
24 //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83EID
25 const static UINT_PTR LISTWINDOW = 258;
28 const static UINT_PTR MENU_OR_ID = 256;
31 class CChatReadEdit :public CWindowImpl<CChatReadEdit,CRichEditCtrl>{
33 BEGIN_MSG_MAP(CChatReadEdit)
37 BOOL SetWindowText(LPCTSTR str);
39 HWND GeneralCreate(HWND hParent,DWORD eventMask,UINT id);
42 class CChatChildCtrls{
43 friend CCommentListWindow;
44 friend CChatChildCtrlsList;
46 CChatReadEdit chatDispCtrl;
47 CHyperLink noDispCtrl;
48 CHyperLink userNameDispCtrl;
49 CCommentView &m_master;
55 NO_DIOSCTRL_ID = 10000000,
56 USERNAME_DISPCTRL_ID = 20000000,
57 CHAT_DISPCTRL_ID = 30000000
62 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
64 CChatChildCtrls(CCommentView &hMaster);
67 ///
\8ew
\92è
\82µ
\82½
\8d\82\82³
\82É
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\83Z
\83b
\83g
69 VOID SetCtrl(const RECT &rc,CCommentList::reference commen,BOOL mulutiLineFlag);
71 VOID AdjustRect(RECT &rc);
78 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82Ì
\8cÂ
\90\94\82ð
\8eæ
\93¾
80 static UINT_PTR GetCtrlCount();
87 class CChatChildCtrlsList{
89 friend CCommentListWindow;
90 friend CChatChildCtrls;
93 typedef std::list<CChatChildCtrls> InternalList;
96 CCommentView &m_hMaster;
101 typedef InternalList::reference reference;
102 typedef InternalList::iterator iterator;
105 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
107 CChatChildCtrlsList(CCommentView &hMaster);
112 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\95\
\8e¦
117 ///
\94ñ
\95\
\8e¦
\8f\88\97\9d
124 ///
\8ag
\92£
\8f\88\97\9d
132 //
\83R
\83\81\83\93\83g
\95\
\8e¦
\97p
\83E
\83B
\83\93\83h
\83E
133 class CCommentListWindow:public CWindowImpl<CCommentListWindow>,public CComAutoCriticalSection{
142 // CChatReadEdit calcEdit;
144 // CComAutoCriticalSection calcCcs;
153 DECLARE_WND_CLASS(commentViewConstant::NLITE_COMMENTLISTWINDOW)
157 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
159 BEGIN_MSG_MAP(CCommentListWindow)
160 MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk)
161 MSG_WM_LBUTTONDOWN(OnLButtonDown)
162 MSG_WM_CREATE(OnCreate)
163 MSG_WM_ERASEBKGND(OnEraseBkGnd)
164 MSG_WM_MOUSEWHEEL(OnMouseWheel)
165 MSG_WM_PAINT(OnPaint)
167 MSG_WM_KEYDOWN(OnKeyDown)
168 NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
169 NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
177 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
179 CCommentListWindow(CCommentView &self_in);
182 ///
\83f
\83X
\83g
\83\89\83N
\83^
184 ~CCommentListWindow();
188 ///
\83X
\83N
\83\8d\81[
\83\8b\83y
\81[
\83W
\8cv
\8eZ
190 UINT_PTR CalcScrollPage(UINT_PTR nMax);
193 ///
\8ds
\82Ì
\8d\82\82³
\82ð
\96â
\82¢
\8d\87\82í
\82¹
195 VOID CalcItemHeight(CChatData &chatData);
198 ///
\91I
\91ð
\8ds
\82ð
\95\
\8e¦
202 VOID CalcChatRect(const CDC &cdc,RECT &rc,const CNLiteString &str);
205 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
209 ///
\83A
\83C
\83e
\83\80\95`
\89æ
211 VOID DrawItem(CDC &dc,const RECT &rc,CChatData &chatData);
217 ///
\83N
\83\8a\83b
\83N
\82µ
\82½
\8ds
\82ð
\8cv
\8eZ
219 INT_PTR CalcClickLine(INT_PTR height);
221 //
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
225 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
227 LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
230 ///
\83}
\83E
\83X
\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
232 VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
235 ///
\95`
\89æ
\8f\88\97\9d
237 VOID OnPaint(HDC hdc);
242 ///
\83T
\83C
\83Y
\95Ï
\8dX
244 VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
247 ///
\83}
\83E
\83X
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
249 VOID OnLButtonDblClk(UINT wParam, _WTYPES_NS::CPoint &point);
252 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
254 LRESULT OnEraseBkGnd(HDC lparam);
257 ///
\83}
\83E
\83X
\83z
\83C
\81[
\83\8b
259 LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
262 ///
\83L
\81[
\89\9f\89º
\8e\9e\82Ì
\8f\88\97\9d
264 VOID OnKeyDown(TCHAR vKey,UINT loLParam,UINT hiLParam);
268 ///
\83`
\83\83\83b
\83g
\83R
\83\93\83g
\83\8d\81[
\83\8b\92Ê
\92m
270 LRESULT OnChatControlNortify(LPNMHDR lParam);
272 LRESULT OnCalcSellSize(LPNMHDR lParam);
277 ///
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83N
\83\89\83X
279 class CCommentView:public CWindowImpl<CCommentView>{
280 friend CChatChildCtrls;
281 friend CCommentListWindow; //
\83t
\83\8c\83\93\83h
\90é
\8c¾
282 friend CChatChildCtrlsList;
283 //
\83v
\83\89\83C
\83x
\81[
\83g
\8c^
\81E
\83N
\83\89\83X
\92è
\8b`
286 //
\83w
\83b
\83_
\81[
\8fî
\95ñ
\8ai
\94[
\97p
\83I
\83u
\83W
\83F
\83N
\83g
290 UINT_PTR *holizensize;
293 }HEADERSINFO,*LPHEADERSINFO;
300 //
\83\81\83\93\83o
\90é
\8c¾
303 CHeaderCtrl m_header; //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8b
304 CCommentListWindow m_commentListWindow; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
305 CNicoLiveStream &stream; //
\95ú
\91\97\83I
\83u
\83W
\83F
\83N
\83g
306 CCommentList commentlist; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
307 CommentViewProperty viewproperty; //
\95\
\8e¦
\83v
\83\8d\83p
\83e
\83B
308 HFONT hHeaderFontNew; //
\83w
\83b
\83_
\81[
\83t
\83H
\83\93\83g
311 CChatChildCtrlsList chatChildCtrlsList;
332 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
334 CCommentView(CNicoLiveStream &stream);
337 ///
\83f
\83X
\83g
\83\89\83N
\83^
344 //
\83E
\83B
\83\93\83h
\83E
\83N
\83\89\83X
\90é
\8c¾
346 DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
349 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
351 BEGIN_MSG_MAP(CCommentView)
352 MSG_WM_CREATE(OnCreate)
353 MSG_WM_DESTROY(OnDestroy)
355 MSG_WM_HSCROLL(OnHScroll)
356 MSG_WM_VSCROLL(OnVScroll)
357 MSG_WM_ERASEBKGND(OnEraseBkgnd)
358 NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
359 NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
363 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
365 VOID SetProperty(CommentViewProperty &setProperty);
368 ///
\83v
\83\8d\83p
\83e
\83B
\8eæ
\93¾
370 CommentViewProperty &GetProperty();
373 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
375 HWND Create(HWND hWndParent);
378 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8eæ
\93¾
380 UINT_PTR GetColumnHolSizeSum();
383 ///
\83j
\83R
\90¶
\82É
\90Ú
\91±
\8e\9e\82Ì
\8f\88\97\9d
388 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8e\9e\82Ì
\8f\88\97\9d
390 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
393 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8am
\92è
\8f\88\97\9d
395 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
399 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
404 ///
\83w
\83b
\83_
\92Ç
\89Á
406 VOID AddHeader(LPHEADERSINFO infos);
409 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8c\88\92è
411 VOID DecisionHorzSize();
415 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8f\88\97\9d
417 VOID ChangeSize(const SIZE& client);
419 //
\83E
\83B
\83\93\83h
\83E
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
425 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8cã
\8f\88\97\9d
427 LRESULT OnSize(UINT wParam,SIZE lParam);
433 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
\8f\88\97\9d
435 LRESULT OnEraseBkgnd(HDC wParam);
438 ///
\83E
\83B
\83\93\83h
\83E
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
443 ///
\83w
\83b
\83_
\83A
\83C
\83e
\83\80\95Ï
\8dX
\8e\9e\8f\88\97\9d
445 LRESULT OnHeaderEndTrack(LPNMHDR lParam);
449 ///
\83w
\83b
\83_
\83h
\83\89\83b
\83O
\8cã
\8f\88\97\9d
451 LRESULT OnHeaderEndDrag(LPNMHDR lParam);
455 ///
\89¡
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
457 VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
460 ///
\8fc
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
462 VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
465 ///
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
467 LRESULT OnCreate(LPCREATESTRUCT lpcs);