OSDN Git Service

フォーカス処理修正
[nlite/nlite.git] / nlite / nlite_commentWrite.h
1 #pragma once
2
3 namespace nlite{
4
5         template <typename T>
6         struct CommentInfo{
7                 LPCTSTR name;
8                 T userData;
9         };
10
11         typedef CommentInfo<COLORREF> CommentColorInfo;
12         typedef CommentInfo<LPCTSTR> CommentSizeInfo; 
13         typedef CommentInfo<LPCTSTR> CommentPosInfo;
14
15         class CNicoLiveStream;
16
17         ///
18         ///\88ê\94Ê\89ï\88õ\83R\83}\83\93\83h
19         ///
20         namespace generalUser{
21                 ///
22                 ///\88ê\94Ê\89ï\88õ\83R\83\81\83\93\83g\90F\83\8a\83X\83g
23                 ///
24                 extern const  CommentColorInfo COMMENT_COLORLIST[];
25
26                 ///
27                 ///\88ê\94Ê\89ï\88õ\83T\83C\83Y\83R\83}\83\93\83h\83\8a\83X\83g
28                 ///
29                 extern const CommentSizeInfo COMMENT_SIZELIST[];
30
31                 ///
32                 ///\88ê\94Ê\89ï\88õ\83R\83\81\83\93\83g\88Ê\92u\83\8a\83X\83g
33                 ///
34                 extern const CommentPosInfo COMMENT_POSLIST[];
35
36         }
37
38         ///
39         ///\83v\83\8c\83~\83A\83\80\89ï\88õ\83R\83}\83\93\83h
40         ///
41         namespace premiumUser{
42                 ///
43                 ///\83v\83\8c\83~\83A\83\80\89ï\88õ\83R\83\81\83\93\83g\90F\83\8a\83X\83g
44                 ///
45                 extern const CommentColorInfo COMMENT_COLORLIST[];
46
47
48                 ///
49                 ///\83v\83\8c\83~\83A\83\80\89ï\88õ\83T\83C\83Y\83R\83}\83\93\83h\83\8a\83X\83g
50                 ///
51                 extern const CommentSizeInfo COMMENT_SIZELIST[];
52
53                 ///
54                 ///\83v\83\8c\83~\83A\83\80\89ï\88õ\83R\83\81\83\93\83g\88Ê\92u\83\8a\83X\83g
55                 ///
56                 extern const CommentPosInfo COMMENT_POSLIST[];
57
58         }
59
60
61         class CCommentWriteWindow;
62         class CSubChatEdit:public CWindowImpl<CSubChatEdit,CEdit>{
63
64
65
66         private:
67                 CCommentWriteWindow &self;
68                 CComAutoCriticalSection cs;
69                 BOOL untilConnectingFlag;
70
71         public:
72                 CSubChatEdit(CCommentWriteWindow &in_commentWriteWindow):self(in_commentWriteWindow){}
73
74
75                 BEGIN_MSG_MAP_EX(CSubLiveNoComboBox)
76                         MSG_WM_KEYDOWN(OnKeyDown)
77                 END_MSG_MAP()
78
79                         void OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam);
80
81
82                         VOID AgreeEnter();
83
84
85         };
86
87
88         const static LPCTSTR COMMENTWRITEWINDOW = TEXT("commentWriteWindow");
89
90
91         ///
92         ///\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\97p\83E\83B\83\93\83h\83E\83N\83\89\83X
93         ///
94         class CCommentWriteWindow:public CWindowImpl<CCommentWriteWindow>{
95
96                 friend CSubChatEdit;
97         private:
98                 CComboBox commentPosBox;                                                                //\83R\83\81\83\93\83g\88Ê\92u\91I\91ð\83R\83\93\83{\83{\83b\83N\83X
99                 CComAutoCriticalSection commentPosBoxCS;                                //\83R\83\81\83\93\83g\88Ê\92u\91I\91ð\83R\83\93\83{\83{\83b\83N\83X\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93
100                 CComboBox commentSizeBox;                                                               //\83R\83\81\83\93\83g\82Ì\91å\82«\82³\91I\91ð\83R\83\93\83{\83{\83b\83N\83X
101                 CComAutoCriticalSection commentSizeBoxCS;                               //\83R\83\81\83\93\83g\82Ì\91å\82«\82³\91I\91ð\83R\83\93\83{\83{\83b\83N\83X\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93
102                 CComboBox commentColorBox;                                                              //\83R\83\81\83\93\83g\90F\91I\91ð\83R\83\93\83{\83{\83b\83N\83X
103                 CButton anonymousButton;                                                                //184\91I\91ð\83{\83^\83\93
104                 CSubChatEdit commentSubEdit;                                                    //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\97p\83G\83f\83B\83b\83g\83T\83u\83N\83\89\83X
105                 CButton commentWriteButton;                                                             //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\83{\83^\83\93
106                 UINT_PTR commentWriteMaxLength;                                                 //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\92·\8dÅ\91å\92l
107                 UINT_PTR commentWriteHeight;                                                    //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\83R\83\93\83g\83\8d\81[\83\8b\94z\92u\97Ì\88æ\82Ì\8d\82\82³
108                 UINT_PTR infoDispHeight;                                                                //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\82É\8aÖ\82·\82é\82à\82Ì\88È\8aO\82Ì\8fî\95ñ\95\\8e¦\97Ì\88æ\82Ì\8d\82\82³
109                 UINT_PTR commentWriteInternalHeight;                                    //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\83R\83\93\83g\83\8d\81[\83\8b\94z\92u\97Ì\88æ\82Ì\8d\82\82³(\93à\95\94)
110                 CNicoLiveStream &nicoLiveStream;                                                //\95ú\91\97\83I\83u\83W\83F\83N\83g\82Ì\8eQ\8fÆ
111                 time_t streamTime;                                                                              //\95ú\91\97\8co\89ß\8e\9e\8aÔ
112                 CFont anonymousFont;                                                                    //184\95\\8e¦\97p\83t\83H\83\93\83g
113                 CFont timeFont;                                                                                 //\8co\89ß\8e\9e\8aÔ\95\\8e¦\97p\83t\83H\83\93\83g
114
115
116                 //\83R\83\93\83g\83\8d\81[\83\8bID
117                 enum CONTROLID{
118                         COMMENTPOS_BOX = 1,
119                         COMMENTSIZE_BOX = 2,
120                         COMMENTCOLOR_BOX = 3,
121                         ANONYMOUS_BUTTON = 4,
122                         COMMENT_EDIT = 5,
123                         COMMENTWRITE_BOTTON = 6,
124                         TIMER_ID = 7
125                 };
126                 
127
128
129         public:
130
131                 DECLARE_WND_CLASS(COMMENTWRITEWINDOW)
132                 //\83\81\83b\83Z\81[\83W\83}\83b\83v
133                 BEGIN_MSG_MAP(CCommentWriteWindow)
134                         MSG_WM_CREATE(OnCreate)
135                         MSG_WM_DESTROY(OnDestroy)
136                         MSG_WM_PAINT(OnPaint)
137                         MSG_WM_SIZE(OnSize)
138                         MSG_WM_ERASEBKGND(OnEraseBkGnd)
139                         MSG_WM_DRAWITEM(OnDrawItem)
140                         MSG_WM_MEASUREITEM(OnMeasureItem)
141                         MSG_WM_TIMER(OnTimer)
142                         COMMAND_CODE_HANDLER_EX(BN_CLICKED,OnButton)
143
144                 END_MSG_MAP()
145
146
147
148
149                 public:
150
151                 ///
152                 ///\83R\83\93\83X\83g\83\89\83N\83^
153                 ///
154                 CCommentWriteWindow(CNicoLiveStream &nicoLiveStream);
155
156                 ///
157                 ///\82±\82Ì\83E\83B\83\93\83h\83E\82Ì\8d\82\82³\82ð\8eæ\93¾
158                 ///
159                 UINT_PTR GetHeight();
160
161                 ///
162                 ///\83R\83\81\83\93\83g\91\97\90M
163                 ///
164                 BOOL SendChat();
165
166                 ///
167                 ///\83R\83\81\83\93\83g\8eó\90M\8aJ\8en\8e\9e\82Ì\8f\88\97\9d
168                 ///
169                 VOID OnChatReceveStart(CNicoLiveStream &nicoLiveStream,NicoLiveThreadComment_P threadComment);
170
171                 ///
172                 ///\83R\83\81\83\93\83g\91\97\90M\8c\8b\89Ê\8eó\90M\8e\9e\82Ì\8f\88\97\9d
173                 ///
174                 VOID OnSendChatResult();
175
176                 ///
177                 ///\83n\81[\83g\83r\81[\83g\91\97\90M\8e\9e\82Ì\8f\88\97\9d
178                 ///
179                 VOID OnHeartBeat(NicoLiveHeartBeat_P heartBeat);
180
181                 ///
182                 ///\95ú\91\97\90Ø\92f\8e\9e\82Ì\8f\88\97\9d
183                 ///
184                 VOID OnDisConnect();
185
186                 //
187                 //\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89
188                 //
189         private:
190
191                 ///
192                 ///\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
193                 ///
194                 LRESULT OnCreate(LPCREATESTRUCT lpReateStruct);
195
196
197                 ///
198                 ///\83E\83B\83\93\83h\83E\94j\8aü\8e\9e\82Ì\8f\88\97\9d
199                 ///
200                 VOID OnDestroy();
201
202                 ///
203                 ///\95`\89æ\8e\9e\82Ì\8f\88\97\9d
204                 ///
205                 VOID OnPaint(HDC hdc);
206
207
208                 ///
209                 ///\83T\83C\83Y\95Ï\8dX\8e\9e\82Ì\8f\88\97\9d
210                 ///
211                 LRESULT OnSize(UINT wParam,SIZE lParam);
212
213                 ///
214                 ///\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
215                 ///
216                 VOID ChangeSize(SIZE &size);
217
218
219                 ///
220                 ///\83A\83C\83e\83\80\95`\89æ\8f\88\97\9d
221                 ///
222                 VOID OnDrawItem(UINT wParam,LPDRAWITEMSTRUCT lParam);
223
224                 ///
225                 ///\83A\83C\83e\83\80\82Ì\8d\82\82³\95Ï\8dX\8f\88\97\9d
226                 ///
227                 VOID OnMeasureItem(UINT wParam,LPMEASUREITEMSTRUCT lParam);
228
229                 ///
230                 ///\94w\8ci\82Ì\83`\83\89\83c\83L\82ð\97}\82¦\82é
231                 ///
232                 LRESULT OnEraseBkGnd(HDC wParam);
233
234                 ///
235                 ///\83{\83^\83\93\89\9f\89º\8e\9e\82Ì\8f\88\97\9d
236                 ///
237                 LRESULT OnButton(UINT hiWparam,INT_PTR loWparam,HWND lParam);
238
239
240                 VOID OnTimer(UINT id);
241
242
243         };
244
245 }