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 BEGIN_MSG_MAP(CChatReadEdit)
40 BOOL SetWindowText(const CChatData &str);
44 VOID linkStringBeside(const tstring &target,const nliteregex::tregex &re);
47 HWND GeneralCreate(HWND hParent,DWORD eventMask,UINT id);
50 class CChatChildCtrls{
51 friend CCommentListWindow;
52 friend CChatChildCtrlsList;
54 CChatReadEdit chatDispCtrl;
55 CHyperLink noDispCtrl;
56 CHyperLink userNameDispCtrl;
57 CCommentView &m_master;
63 NO_DIOSCTRL_ID = 10000000,
64 USERNAME_DISPCTRL_ID = 20000000,
65 CHAT_DISPCTRL_ID = 30000000
70 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
72 CChatChildCtrls(CCommentView &hMaster);
75 ///
\8ew
\92è
\82µ
\82½
\8d\82\82³
\82É
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\83Z
\83b
\83g
77 VOID SetCtrl(HDWP,const RECT &rc,CCommentList::reference commen,BOOL mulutiLineFlag);
79 VOID AdjustRect(RECT &rc);
86 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82Ì
\8cÂ
\90\94\82ð
\8eæ
\93¾
88 static UINT_PTR GetCtrlCount();
95 class CChatChildCtrlsList{
97 friend CCommentListWindow;
98 friend CChatChildCtrls;
101 typedef std::list<CChatChildCtrls> InternalList;
104 CCommentView &m_hMaster;
109 typedef InternalList::reference reference;
110 typedef InternalList::iterator iterator;
113 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
115 CChatChildCtrlsList(CCommentView &hMaster);
120 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\82ð
\95\
\8e¦
125 ///
\94ñ
\95\
\8e¦
\8f\88\97\9d
132 ///
\8ag
\92£
\8f\88\97\9d
140 //
\83R
\83\81\83\93\83g
\95\
\8e¦
\97p
\83E
\83B
\83\93\83h
\83E
141 class CCommentListWindow:public CWindowImpl<CCommentListWindow>{
144 friend CChatChildCtrls;
145 friend CChatChildCtrlsList;
151 UINT_PTR viewSellHeight;
152 CPen collLinePen; //
\8d\80\96Ú
\8fc
\90ü
\95`
\89æ
\97p
\83y
\83\93
153 CPen normalSellLinePen; //
\98g
\90ü
\95`
\89æ
\97p
\83y
\83\93
154 CBrush normalBkBrush; //
\94w
\8ci
\95`
\89æ
\97p
\83u
\83\89\83V
155 CPen selectSellLinePen; //
\98g
\90ü
\95`
\89æ
\97p
\83y
\83\93
156 CBrush selectBkBrush; //
\94w
\8ci
\95`
\89æ
\97p
\83u
\83\89\83V
157 CFont linkFont; //
\83\8a\83\93\83N
\95¶
\8e\9a\97ñ
\97p
\82Ì
\83t
\83H
\83\93\83g
166 DECLARE_WND_CLASS(commentViewConstant::NLITE_COMMENTLISTWINDOW)
170 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
172 BEGIN_MSG_MAP(CCommentListWindow)
173 MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk)
174 MSG_WM_LBUTTONDOWN(OnLButtonDown)
175 MSG_WM_CREATE(OnCreate)
176 MSG_WM_ERASEBKGND(OnEraseBkGnd)
177 MSG_WM_MOUSEWHEEL(OnMouseWheel)
178 MSG_WM_PAINT(OnPaint)
180 MSG_WM_KEYDOWN(OnKeyDown)
181 MSG_WM_SETCURSOR(OnSetCursor)
182 MESSAGE_HANDLER_EX(UM_COMMENTVIEW_SETCTRL,OnSetCtrol)
183 NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
184 NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
192 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
194 CCommentListWindow(CCommentView &self_in);
197 ///
\83f
\83X
\83g
\83\89\83N
\83^
199 ~CCommentListWindow();
203 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
\8e\9e\82Ì
\8f\88\97\9d
205 VOID OnSetProperty();
208 ///
\83X
\83N
\83\8d\81[
\83\8b\83y
\81[
\83W
\8cv
\8eZ
210 UINT_PTR CalcScrollPage(UINT_PTR nMax);
213 ///
\8ds
\82Ì
\8d\82\82³
\82ð
\96â
\82¢
\8d\87\82í
\82¹
215 VOID CalcItemHeight(CChatData &chatData);
218 ///
\91I
\91ð
\8ds
\82ð
\95\
\8e¦
222 VOID CalcChatRect(const CDC &cdc,RECT &rc,const CNLiteString &str);
225 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
229 ///
\83A
\83C
\83e
\83\80\95`
\89æ
231 VOID DrawItem(CDC &dc,const RECT &rc,const RECT *headerRect,CChatData &chatData);
234 ///
\95`
\89æ
\8d\82\82³
\82ð
\83\8a\83Z
\83b
\83g
236 VOID ResetViewSellHeight();
240 ///
\83N
\83\8a\83b
\83N
\82µ
\82½
\8ds
\82ð
\8cv
\8eZ
242 CCommentList::iterator CalcClickLine(INT_PTR height);
245 ///
\83\86\81[
\83U
\96¼
\82©
\83R
\83\81\94Ô
\8fã
\82©
\82Ì
\94»
\92è
247 BOOL IsOnNoOrUserName(UINT_PTR index,const POINT &point);
249 //
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
253 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
255 LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
258 ///
\83}
\83E
\83X
\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
260 VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
263 ///
\95`
\89æ
\8f\88\97\9d
265 VOID OnPaint(HDC hdc);
268 ///
\83R
\83\93\83g
\83\8d\81[
\83\8b\83Z
\83b
\83g
\8f\88\97\9d
270 LRESULT OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam);
273 ///
\83T
\83C
\83Y
\95Ï
\8dX
275 VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
278 ///
\83}
\83E
\83X
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\8e\9e\82Ì
\8f\88\97\9d
280 VOID OnLButtonDblClk(UINT wParam, _WTYPES_NS::CPoint &point);
283 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
285 LRESULT OnEraseBkGnd(HDC lparam);
288 ///
\83}
\83E
\83X
\83z
\83C
\81[
\83\8b
290 LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
293 ///
\83L
\81[
\89\9f\89º
\8e\9e\82Ì
\8f\88\97\9d
295 VOID OnKeyDown(TCHAR vKey,UINT loLParam,UINT hiLParam);
298 ///
\83J
\81[
\83\
\83\8b\95Ï
\8dX
\8f\88\97\9d
300 LRESULT OnSetCursor(HWND wparam,UINT loLparam,UINT hiLparam);
303 ///
\83`
\83\83\83b
\83g
\83R
\83\93\83g
\83\8d\81[
\83\8b\92Ê
\92m
305 LRESULT OnChatControlNortify(LPNMHDR lParam);
307 LRESULT OnCalcSellSize(LPNMHDR lParam);
312 ///
\83R
\83\81\83\93\83g
\83r
\83\85\81[
\83N
\83\89\83X
314 class CCommentView:public CWindowImpl<CCommentView>{
315 friend CChatChildCtrls;
316 friend CCommentListWindow; //
\83t
\83\8c\83\93\83h
\90é
\8c¾
317 friend CChatChildCtrlsList;
318 friend CChatChildCtrls;
319 //
\83v
\83\89\83C
\83x
\81[
\83g
\8c^
\81E
\83N
\83\89\83X
\92è
\8b`
322 //
\83w
\83b
\83_
\81[
\8fî
\95ñ
\8ai
\94[
\97p
\83I
\83u
\83W
\83F
\83N
\83g
326 UINT_PTR *holizensize;
329 }HEADERSINFO,*LPHEADERSINFO;
336 //
\83\81\83\93\83o
\90é
\8c¾
339 CHeaderCtrl m_header; //
\83w
\83b
\83_
\81[
\83R
\83\93\83g
\83\8d\81[
\83\8b
340 CCommentListWindow m_commentListWindow; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83E
\83B
\83\93\83h
\83E
341 CNicoLiveStream &stream; //
\95ú
\91\97\83I
\83u
\83W
\83F
\83N
\83g
342 CCommentList commentlist; //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
343 CommentViewProperty viewproperty; //
\95\
\8e¦
\83v
\83\8d\83p
\83e
\83B
344 HFONT hHeaderFontNew; //
\83w
\83b
\83_
\81[
\83t
\83H
\83\93\83g
347 CChatChildCtrlsList chatChildCtrlsList;
368 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
370 CCommentView(CNicoLiveStream &stream);
373 ///
\83f
\83X
\83g
\83\89\83N
\83^
380 //
\83E
\83B
\83\93\83h
\83E
\83N
\83\89\83X
\90é
\8c¾
382 DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
385 //
\83\81\83b
\83Z
\81[
\83W
\83}
\83b
\83v
387 BEGIN_MSG_MAP(CCommentView)
388 MSG_WM_CREATE(OnCreate)
389 MSG_WM_DESTROY(OnDestroy)
391 MSG_WM_HSCROLL(OnHScroll)
392 MSG_WM_VSCROLL(OnVScroll)
393 MSG_WM_ERASEBKGND(OnEraseBkgnd)
394 NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
395 NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
399 ///
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
401 VOID SetProperty(CommentViewProperty &setProperty);
404 ///
\83v
\83\8d\83p
\83e
\83B
\8eæ
\93¾
406 CommentViewProperty &GetProperty();
409 ///
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
411 HWND Create(HWND hWndParent);
414 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8eæ
\93¾
416 UINT_PTR GetColumnHolSizeSum();
419 ///
\83j
\83R
\90¶
\82É
\90Ú
\91±
\8e\9e\82Ì
\8f\88\97\9d
424 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8e\9e\82Ì
\8f\88\97\9d
426 VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
429 ///
\83`
\83\83\83b
\83g
\83R
\83\81\83\93\83g
\8eó
\90M
\8am
\92è
\8f\88\97\9d
431 VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
435 //
\83v
\83\89\83C
\83x
\81[
\83g
\8aÖ
\90\94
440 ///
\83w
\83b
\83_
\92Ç
\89Á
442 VOID AddHeader(LPHEADERSINFO infos);
445 ///
\83w
\83b
\83_
\82Ì
\89¡
\95\9d\8c\88\92è
447 VOID DecisionHorzSize();
451 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8f\88\97\9d
453 VOID ChangeSize(const SIZE& client);
455 //
\83E
\83B
\83\93\83h
\83E
\83\81\83b
\83Z
\81[
\83W
\83n
\83\93\83h
\83\89
461 ///
\83T
\83C
\83Y
\95Ï
\8dX
\8cã
\8f\88\97\9d
463 LRESULT OnSize(UINT wParam,SIZE lParam);
469 ///
\94w
\8ci
\93h
\82è
\82Â
\82Ô
\82µ
\8f\88\97\9d
471 LRESULT OnEraseBkgnd(HDC wParam);
474 ///
\83E
\83B
\83\93\83h
\83E
\94j
\8aü
\8e\9e\82Ì
\8f\88\97\9d
479 ///
\83w
\83b
\83_
\83A
\83C
\83e
\83\80\95Ï
\8dX
\8e\9e\8f\88\97\9d
481 LRESULT OnHeaderEndTrack(LPNMHDR lParam);
485 ///
\83w
\83b
\83_
\83h
\83\89\83b
\83O
\8cã
\8f\88\97\9d
487 LRESULT OnHeaderEndDrag(LPNMHDR lParam);
492 ///
\89¡
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
494 VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
497 ///
\8fc
\83X
\83N
\83\8d\81[
\83\8b\8e\9e\82Ì
\8f\88\97\9d
499 VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
502 ///
\8dì
\90¬
\8e\9e\82Ì
\8f\88\97\9d
504 LRESULT OnCreate(LPCREATESTRUCT lpcs);