namespace nlite{
+ class CCommentView;
+ class CCommentListWindow;
+ class CChatChildCtrlsList;
+ class CChatChildCtrls;
+
+ //\92è\90\94\97p\82Ì\96¼\91O\8bó\8aÔ
namespace commentViewConstant{
- const static LPCTSTR NLITE_COMMENTVIEW = TEXT("commentViewConstant::NLITE_COMMENTVIEW");
+ //\83R\83\81\83\93\83g\83r\83\85\81[\83E\83B\83\93\83h\83E\96¼
+ const static LPCTSTR NLITE_COMMENTVIEW = TEXT("NLITE_COMMENTVIEW");
+
+ //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83E\96¼
+ const static LPCTSTR NLITE_COMMENTLISTWINDOW = TEXT("NLITE_COMMENTLISTWINDOW");
+
+ //\83w\83b\83_\81[\82Ì\8d\82\82³
const static UINT_PTR HEADER_HAIGHT = 20;
+ //\83w\83b\83_\81[\83R\83\93\83g\83\8d\81[\83\8bID
const static UINT_PTR HEADER_ID = 257;
- const static UINT_PTR LISTBOX_ID = 258;
+ //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83EID
+ const static UINT_PTR LISTWINDOW = 258;
+ //baseWindowID
const static UINT_PTR MENU_OR_ID = 256;
}
-
- class CCommentView:public CWindowImpl<CCommentView>{
+
+ class CChatReadEdit :public CWindowImpl<CChatReadEdit,CRichEditCtrl>{
+ friend CCommentListWindow;
+ friend CChatChildCtrls;
+
+ CCommentView &m_master;
+
+
+ BEGIN_MSG_MAP(CChatReadEdit)
+
+ END_MSG_MAP()
+ CChatReadEdit(CCommentView &m_master);
+ BOOL SetWindowText(const CChatData &str);
+
+ ///
+ ///\93à\97e\82ð\83\8a\83Z\83b\83g
+ //
+ VOID Reset();
+
+
+ ///
+ ///\83\8a\83\93\83N\95\\8e¦\95¶\8e\9a\97ñ\82ð\8c\88\92è
+ ///
+ VOID linkStringBeside(const tstring &target,const nliteregex::tregex &re);
+
+
+ ///
+ ///\82±\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\82É\82¨\82¯\82é\94Ä\97p\93I\82È\83E\83B\83\93\83h\83E\8dì\90¬\8aÖ\90\94
+ ///
+ HWND GeneralCreate(HWND hParent,DWORD eventMask,UINT id);
+ };
+
+ class CChatChildCtrls{
+ friend CCommentListWindow;
+ friend CChatChildCtrlsList;
+ private:
+ CChatReadEdit chatDispCtrl;
+ CCommentView &m_master;
+
+
+ private:
+
+ enum {
+ NO_DIOSCTRL_ID = 10000000,
+ USERNAME_DISPCTRL_ID = 20000000,
+ CHAT_DISPCTRL_ID = 30000000
+
+ };
+
+ ///
+ ///\83R\83\93\83X\83g\83\89\83N\83^
+ ///
+ CChatChildCtrls(CCommentView &hMaster);
+
+ ///
+ ///\8ew\92è\82µ\82½\8d\82\82³\82É\83R\83\93\83g\83\8d\81[\83\8b\82ð\83Z\83b\83g
+ ///
+ VOID SetCtrl(HDWP,const RECT &rc,CCommentList::reference commen,BOOL mulutiLineFlag);
+
+ VOID AdjustRect(RECT &rc);
+
+ VOID Hide(HDWP hdwp);
+
+ VOID Create();
+
+ ///
+ ///\83R\83\93\83g\83\8d\81[\83\8b\82Ì\8cÂ\90\94\82ð\8eæ\93¾
+ ///
+ static UINT_PTR GetCtrlCount();
+
+
+
+ };
+
+ ///
+ ///\83R\83\81\83\93\83g\95\\8e¦\83E\83B\83\93\83h\83E\82Ì\8eq\83E\83B\83\93\83h\83E\83\8a\83X\83g
+ ///
+ class CChatChildCtrlsList{
+ friend CCommentView;
+ friend CCommentListWindow;
+ friend CChatChildCtrls;
+
+ private:
+ typedef std::list<CChatChildCtrls> InternalList;
+
+ InternalList m_list; //\93à\95\94\82Å\8aÇ\97\9d\82·\82é\83\8a\83X\83g
+ CCommentView &m_hMaster; //\82±\82Ì\83E\83B\83\93\83h\83E\82ð\8f\8a\97L\82µ\82Ä\82¢\82é\90e\83E\83B\83\93\83h\83E
+
+
+ private:
+ typedef InternalList::reference reference;
+ typedef InternalList::iterator iterator;
+
+ ///
+ ///\83R\83\93\83X\83g\83\89\83N\83^
+ ///
+ CChatChildCtrlsList(CCommentView &hMaster);
+
+
+
+ ///
+ ///\83R\83\93\83g\83\8d\81[\83\8b\82ð\95\\8e¦
+ ///
+ VOID ShowCntrls();
+
+ ///
+ ///\94ñ\95\\8e¦\8f\88\97\9d
+ ///
+ VOID AllHide();
+
+ private:
+
+ ///
+ ///\8ag\92£\8f\88\97\9d
+ ///
+ iterator Extend();
+
+
+ };
+
+
+ //\83R\83\81\83\93\83g\95\\8e¦\97p\83E\83B\83\93\83h\83E
+ class CCommentListWindow:public CWindowImpl<CCommentListWindow>{
+
+ friend CCommentView;
+ friend CChatChildCtrls;
+ friend CChatChildCtrlsList;
+
+
+ //\83\81\83\93\83o
+ private:
+ CCommentView &self;
+ UINT_PTR viewSellHeight;
+ CPen collLinePen; //\8d\80\96Ú\8fc\90ü\95`\89æ\97p\83y\83\93
+ CPen normalSellLinePen; //\98g\90ü\95`\89æ\97p\83y\83\93
+ CBrush normalBkBrush; //\94w\8ci\95`\89æ\97p\83u\83\89\83V
+ CPen selectSellLinePen; //\98g\90ü\95`\89æ\97p\83y\83\93
+ CBrush selectBkBrush; //\94w\8ci\95`\89æ\97p\83u\83\89\83V
+ CFont linkFont; //\83\8a\83\93\83N\95¶\8e\9a\97ñ\82Ì\83t\83H\83\93\83g
+
+
+ enum {
+ CALCEDIT_ID = 100
+
+ };
+
+ public:
+
+
+ DECLARE_WND_CLASS(commentViewConstant::NLITE_COMMENTLISTWINDOW)
+
+
+ //
+ //\83\81\83b\83Z\81[\83W\83}\83b\83v
+ //
+ BEGIN_MSG_MAP(CCommentListWindow)
+ MSG_WM_LBUTTONDBLCLK(OnLButtonDblClk)
+ MSG_WM_LBUTTONDOWN(OnLButtonDown)
+ MSG_WM_CREATE(OnCreate)
+ MSG_WM_ERASEBKGND(OnEraseBkGnd)
+ MSG_WM_MOUSEWHEEL(OnMouseWheel)
+ MSG_WM_PAINT(OnPaint)
+ MSG_WM_SIZE(OnSize)
+ MSG_WM_KEYDOWN(OnKeyDown)
+ MSG_WM_SETCURSOR(OnSetCursor)
+ MESSAGE_HANDLER_EX(UM_COMMENTVIEW_SETCTRL,OnSetCtrol)
+ NOTIFY_ID_HANDLER_EX(CChatChildCtrls::CHAT_DISPCTRL_ID,OnChatControlNortify)
+ NOTIFY_HANDLER_EX(CALCEDIT_ID,EN_REQUESTRESIZE,OnCalcSellSize)
+ END_MSG_MAP()
+
+
+
+ private:
+
+ ///
+ ///\83R\83\93\83X\83g\83\89\83N\83^
+ ///
+ CCommentListWindow(CCommentView &self_in);
+
+ ///
+ ///\83f\83X\83g\83\89\83N\83^
+ ///
+ ~CCommentListWindow();
+
+
+
+
+ ///
+ ///\83v\83\8d\83p\83e\83B\90Ý\92è\8e\9e\82Ì\8f\88\97\9d
+ ///
+ VOID OnSetProperty();
+
+ ///
+ ///\83X\83N\83\8d\81[\83\8b\83y\81[\83W\8cv\8eZ
+ ///
+ UINT_PTR CalcScrollPage(UINT_PTR nMax);
+
+ ///
+ ///\8ds\82Ì\8d\82\82³\82ð\96â\82¢\8d\87\82í\82¹
+ ///
+ VOID CalcItemHeight(CChatData &chatData);
+
+ ///
+ ///\91I\91ð\8ds\82ð\95\\8e¦
+ ///
+ VOID ShowCurSel();
+
+ ///
+ ///\83`\83\83\83b\83g\95¶\8e\9a\97ñ\95\\8e¦\97Ì\88æ\8cv\8eZ
+ ///
+ VOID CalcChatRect(const CDC &cdc,RECT &rc,const CNLiteString &str);
+
+
+ //\83v\83\89\83C\83x\81[\83g\8aÖ\90\94
+ private:
+
+ ///
+ ///\83A\83C\83e\83\80\95`\89æ
+ ///
+ VOID DrawItem(CDC &dc,const RECT &rc,const RECT *headerRect,CChatData &chatData);
+
+ ///
+ ///\95`\89æ\8d\82\82³\82ð\83\8a\83Z\83b\83g
+ ///
+ VOID ResetViewSellHeight();
+
+
+ ///
+ ///\83N\83\8a\83b\83N\82µ\82½\8ds\82ð\8cv\8eZ
+ ///
+ CCommentList::iterator CalcClickLine(INT_PTR height);
+
+ ///
+ ///\83\86\81[\83U\96¼\82©\83R\83\81\94Ô\8fã\82©\82Ì\94»\92è
+ ///
+ BOOL IsOnNoOrUserName(UINT_PTR index,const POINT &point);
+
+ //\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
+ private:
+
+ ///
+ ///\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
+ ///
+ LRESULT OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+ ///
+ ///\83}\83E\83X\83N\83\8a\83b\83N\8e\9e\82Ì\8f\88\97\9d
+ ///
+ VOID OnLButtonDown(UINT wParam, _WTYPES_NS::CPoint &point);
+
+ ///
+ ///\94j\8aü\8e\9e\82Ì\8f\88\97\9d
+ ///
+ VOID OnDestroy();
+
+ ///
+ ///\95`\89æ\8f\88\97\9d
+ ///
+ VOID OnPaint(HDC hdc);
+
+ ///
+ ///\83R\83\93\83g\83\8d\81[\83\8b\83Z\83b\83g\8f\88\97\9d
+ ///
+ LRESULT OnSetCtrol(UINT uMsg,WPARAM wparam,LPARAM lparam);
+
+ ///
+ ///\83T\83C\83Y\95Ï\8dX
+ ///
+ VOID OnSize(UINT wParam, _WTYPES_NS::CSize &windowSize);
+
+ ///
+ ///\83}\83E\83X\83_\83u\83\8b\83N\83\8a\83b\83N\8e\9e\82Ì\8f\88\97\9d
+ ///
+ VOID OnLButtonDblClk(UINT wParam, _WTYPES_NS::CPoint &point);
+
+ ///
+ ///\94w\8ci\93h\82è\82Â\82Ô\82µ
+ ///
+ LRESULT OnEraseBkGnd(HDC lparam);
+
+ ///
+ ///\83}\83E\83X\83z\83C\81[\83\8b
+ ///
+ LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
+
+ ///
+ ///\83L\81[\89\9f\89º\8e\9e\82Ì\8f\88\97\9d
+ ///
+ VOID OnKeyDown(TCHAR vKey,UINT loLParam,UINT hiLParam);
+
+ ///
+ ///\83J\81[\83\\83\8b\95Ï\8dX\8f\88\97\9d
+ ///
+ LRESULT OnSetCursor(HWND wparam,UINT loLparam,UINT hiLparam);
+
+ ///
+ ///\83`\83\83\83b\83g\83R\83\93\83g\83\8d\81[\83\8b\92Ê\92m
+ ///
+ LRESULT OnChatControlNortify(LPNMHDR lParam);
+
+
+ ///
+ ///\83Z\83\8b\82Ì\83T\83C\83Y\82ð\8cv\8eZ
+ ///
+ LRESULT OnCalcSellSize(LPNMHDR lParam);
+
+ };
+
+ ///
+ ///\83R\83\81\83\93\83g\83r\83\85\81[\83N\83\89\83X
+ ///
+ class CCommentView:public CWindowImpl<CCommentView>{
+ friend CChatChildCtrls;
+ friend CCommentListWindow; //\83t\83\8c\83\93\83h\90é\8c¾
+ friend CChatChildCtrlsList;
+ friend CChatChildCtrls;
+ friend CChatReadEdit;
//\83v\83\89\83C\83x\81[\83g\8c^\81E\83N\83\89\83X\92è\8b`
private:
+ //\83w\83b\83_\81[\8fî\95ñ\8ai\94[\97p\83I\83u\83W\83F\83N\83g
typedef struct{
LPTSTR *columns;
}HEADERSINFO,*LPHEADERSINFO;
-
-
- class CSubCommentListBox:public CDoubleBufferWindowImpl<CSubCommentListBox>{
- //\83v\83\89\83C\83x\81[\83g\83\81\83\93\83o
- private:
- CDC m_MemoryDC;
- CBitmap m_Bitmap;
- LPDWORD lpPixel;
- public:
- BEGIN_MSG_MAP_EX(CSubCommentListBox)
- MSG_WM_PAINT(OnPaint)
- CHAIN_MSG_MAP(CDoubleBufferWindowImpl<CSubCommentListBox>)
- END_MSG_MAP()
+ //\83\81\83\93\83o\90é\8c¾
+ private:
+
+ CHeaderCtrl m_header; //\83w\83b\83_\81[\83R\83\93\83g\83\8d\81[\83\8b
+ CCommentListWindow m_commentListWindow; //\83R\83\81\83\93\83g\83\8a\83X\83g\83E\83B\83\93\83h\83E
+ CNicoLiveStream &stream; //\95ú\91\97\83I\83u\83W\83F\83N\83g
+ GeneralProperty generalProperty; //\88ê\94Ê\90Ý\92è
+ CCommentList commentlist; //\83R\83\81\83\93\83g\83\8a\83X\83g
+ CommentViewProperty viewproperty; //\95\\8e¦\83v\83\8d\83p\83e\83B
+ HFONT hHeaderFontNew; //\83w\83b\83_\81[\83t\83H\83\93\83g
+ CNicoVideoAuth &refAuth; //\83j\83R\83j\83R\90¶\95ú\91\97\94F\8fØ\83I\83u\83W\83F\83N\83g\8eQ\8fÆ
+ CChatChildCtrlsList chatChildCtrlsList; //\8eq\83E\83B\83\93\83h\83E\83\8a\83X\83g
+
+
+
+
- VOID CreateMemoryDC();
-
- private:
- VOID OnPaint(HDC hdc);
-
-
- };
- //\83\81\83\93\83o\90é\8c¾
- private:
- CHeaderCtrl m_header;
- CListBox m_listBox;
- CComAutoCriticalSection ccs;
- CStreamStatus streamStatus;
- CCommentList commentlist;
- CommentViewProperty viewproperty;
- CBrush bkBurushNomal;
- CBrush bkBurushSelect;
- CPen outLinePenNomal;
- CPen outLinePenSelect;
- CPen colLinePen;
- HFONT hHeaderFontNew;
- SCROLLINFO hScrollInfo;
-// CSubCommentListBox m_subListBox;
-
-
-
-
-
-
public:
enum{
INFO
};
-
+
///
///\83R\83\93\83X\83g\83\89\83N\83^
///
- CCommentView();
-
+ CCommentView(CNicoLiveStream &stream,CNicoVideoAuth &refAuth);
+
///
///\83f\83X\83g\83\89\83N\83^
///
~CCommentView();
-
+ ///
+ ///\83E\83B\83\93\83h\83E\8dX\90V
+ ///
+ VOID UpDateUI();
+
//
//\83E\83B\83\93\83h\83E\83N\83\89\83X\90é\8c¾
//
DECLARE_WND_CLASS_EX(commentViewConstant::NLITE_COMMENTVIEW,0,COLOR_BACKGROUND)
-
+
//
//\83\81\83b\83Z\81[\83W\83}\83b\83v
//
BEGIN_MSG_MAP(CCommentView)
MSG_WM_CREATE(OnCreate)
MSG_WM_DESTROY(OnDestroy)
- MSG_WM_DRAWITEM(OnDrawItem)
- MSG_WM_MEASUREITEM(OnMeasureItem)
- MSG_WM_SIZING(OnSizing)
MSG_WM_SIZE(OnSize)
- MSG_WM_PAINT(OnPaint)
MSG_WM_HSCROLL(OnHScroll)
+ MSG_WM_VSCROLL(OnVScroll)
+ MESSAGE_HANDLER_EX(UM_CLICK_CHATNO,OnClickChatNo)
+ MESSAGE_HANDLER_EX(UM_CLICK_USERNAME,OnClickUserName)
MSG_WM_ERASEBKGND(OnEraseBkgnd)
- COMMAND_CODE_HANDLER_EX(LBN_DBLCLK,OnListBoxDoubleClick)
- NOTIFY_CODE_HANDLER_EX(HDN_ITEMCHANGED ,OnheaderItemChanged)
- NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
+ NOTIFY_CODE_HANDLER_EX(HDN_ENDTRACK ,OnHeaderEndTrack)
+ NOTIFY_CODE_HANDLER_EX(HDN_ENDDRAG ,OnHeaderEndDrag)
END_MSG_MAP()
///
///\83v\83\8d\83p\83e\83B\90Ý\92è
///
- VOID SetProperty(CommentViewProperty &setProperty);
+ VOID SetProperty(const CommentViewProperty &setProperty,const GeneralProperty &in_generalProperty);
///
///\83v\83\8d\83p\83e\83B\8eæ\93¾
///
CommentViewProperty &GetProperty();
-
+
///
///\83E\83B\83\93\83h\83E\8dì\90¬
///
VOID OnConnect();
///
- ///\83j\83R\90¶\82Ì\83X\83e\81[\83^\83X\90Ý\92è
- ///
- VOID SetStreamStatus(StreamStatus &st);
-
- ///
///\83`\83\83\83b\83g\83R\83\81\83\93\83g\8eó\90M\8e\9e\82Ì\8f\88\97\9d
///
VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
///\83`\83\83\83b\83g\83R\83\81\83\93\83g\8eó\90M\8am\92è\8f\88\97\9d
///
VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
-
+
//\83v\83\89\83C\83x\81[\83g\8aÖ\90\94
private:
-
- ///
- ///\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\83\8d\83b\83N
- ///
- VOID Lock();
-
- ///
- ///\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\83\8d\83b\83N\89ð\8f\9c
- ///
- VOID Unlock();
///
///\83w\83b\83_\92Ç\89Á
///
VOID AddHeader(LPHEADERSINFO infos);
-
+
///
///\83w\83b\83_\82Ì\89¡\95\9d\8c\88\92è
///
//\83E\83B\83\93\83h\83E\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
private:
-
+
+
+
///
- ///\94w\8ci\95`\89æ\8f\88\97\9d
+ ///\83T\83C\83Y\95Ï\8dX\8cã\8f\88\97\9d
///
- VOID OnPaint(HDC wParam);
+ LRESULT OnSize(UINT wParam,SIZE lParam);
+
+
///
- ///\83T\83C\83Y\95Ï\8dX\92\86\8f\88\97\9d
+ ///\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
///
- VOID OnSizing(UINT wParam,LPRECT lParam);
+ LRESULT OnClickChatNo(UINT uMsg,WPARAM wParam,LPARAM lParam);
+
///
- ///\83T\83C\83Y\95Ï\8dX\8cã\8f\88\97\9d
+ ///\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
///
- LRESULT OnSize(UINT wParam,SIZE lParam);
+ LRESULT OnClickUserName(UINT uMsg,WPARAM wParam,LPARAM lParam);
-
///
///\94w\8ci\93h\82è\82Â\82Ô\82µ\8f\88\97\9d
///
LRESULT OnEraseBkgnd(HDC wParam);
-
+
///
///\83E\83B\83\93\83h\83E\94j\8aü\8e\9e\82Ì\8f\88\97\9d
///
VOID OnDestroy();
-
+
///
///\83w\83b\83_\83A\83C\83e\83\80\95Ï\8dX\8e\9e\8f\88\97\9d
///
- LRESULT OnheaderItemChanged(LPNMHDR lParam);
+ LRESULT OnHeaderEndTrack(LPNMHDR lParam);
///
///
LRESULT OnHeaderEndDrag(LPNMHDR lParam);
- ///
- ///\83\8a\83X\83g\83{\83b\83N\83X\83_\83u\83\8b\83N\83\8a\83b\83N\8e\9e\82Ì\8f\88\97\9d
- ///
- LRESULT OnListBoxDoubleClick(UINT uNotifyCode, int nID, CWindow wndCtl);
+
///
///\89¡\83X\83N\83\8d\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
///
VOID OnHScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
-
///
- ///\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
+ ///\8fc\83X\83N\83\8d\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
///
- LRESULT OnCreate(LPCREATESTRUCT lpcs);
-
- ///
- ///\88ê\8ds\82²\82Æ\82Ì\8d\82\82³\82ð\96â\82¢\8d\87\82í\82¹
- ///
- VOID OnMeasureItem(UINT wParam, LPMEASUREITEMSTRUCT lParam);
-
+ VOID OnVScroll(INT_PTR loWParam,SHORT hiWParam,HWND lParam);
+
///
- ///\83\8a\83X\83g\83A\83C\83e\83\80\95`\89æ\8f\88\97\9d
+ ///\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
///
- VOID OnDrawItem(UINT wParam,LPDRAWITEMSTRUCT lParam);
-
+ LRESULT OnCreate(LPCREATESTRUCT lpcs);
};
-
+
}