OSDN Git Service

エラー処理途中まで
[nlite/nlite.git] / nlite / nlite_mainframe.h
1 #pragma once
2
3 namespace nlite{
4         
5
6         ///
7         ///\83E\83B\83\93\83h\83E\96¼
8         ///
9         const static LPCTSTR NLITE_MAINWINDOW = TEXT("nlite");
10
11         
12         
13         ///
14         ///\83\81\83C\83\93\83t\83\8c\81[\83\80\83N\83\89\83X
15         ///
16         class CNliteMainFrame : public CFrameWindowImpl<CNliteMainFrame>
17                 ,public CUpdateUI<CNliteMainFrame>,public CMessageFilter, public CIdleHandler
18         {
19                 
20         public:
21
22                 
23                 class CLiveUserData;
24                 friend CLiveUserData;
25
26                 struct LvnoSearchFunctional;
27
28                 ///
29                 ///\95ú\91\97\94Ô\8d\86\93ü\97Í\97p
30                 ///
31                 class CSubLiveNoComboBox:public CWindowImpl<CEdit>{
32                         friend CNliteMainFrame;
33
34                 public:
35                         //\8e\8b\92®\97\9a\97ð\95\\8e¦\97p\83y\83A
36                         typedef std::pair<CNLiteString,CNLiteString> LiveInfo;
37                         typedef std::list<LiveInfo> LiveInfoList;
38
39                 private:
40                         CNliteMainFrame &self;                                          //\83\81\83C\83\93\83t\83\8c\81[\83\80\83E\83B\83\93\83h\83E
41                         CComAutoCriticalSection cs;                                     //\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\83I\83u\83W\83F\83N\83g
42                         BOOL untilConnectingFlag;                                       //\90Ú\91±\8f\88\97\9d\92\86\82©\82Ì\83t\83\89\83O\94»\92è
43                         LiveInfoList liveInfoList;                                      //\95ú\91\97\97\9a\97ð\8fî\95ñ
44                 public:
45                         
46                         ///
47                         ///\83R\83\93\83X\83^\83\89\83N\83^
48                         ///
49                         CSubLiveNoComboBox(CNliteMainFrame &in_self);
50                         
51
52                         //\83\81\83b\83Z\81[\83W\83\8b\81[\83v
53                         BEGIN_MSG_MAP_EX(CSubLiveNoComboBox)
54                                 MSG_WM_MOUSEWHEEL(OnMouseWheel)
55                                 MSG_WM_KEYDOWN(OnKeyDown)
56                         END_MSG_MAP()
57
58                 public:
59
60                         ///
61                         ///\95ú\91\97\8fî\95ñ\92Ç\89Á
62                         ///
63                         VOID AddLiveInfo(CNicoLiveStream &stream,LvnoSearchFunctional &functional);
64                         
65
66                         ///
67                         ///\95ú\91\97\94Ô\8d\86\93ü\97Í\82ð\8b\96\89Â\82·\82é
68                         ///
69                         VOID AgreeInputLvNo();
70
71
72                 private:
73                         ///
74                         ///\83L\81[\89\9f\89º\8e\9e\82Ì\8f\88\97\9d
75                         ///
76                         VOID OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam);
77
78
79                         ///
80                         ///\83}\83E\83X\83z\83C\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
81                         ///
82                         LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
83                         
84
85                 };
86
87
88                 
89                 struct LvnoSearchFunctional{
90                         LPCTSTR lvNo;                                                                                   
91                         CNLiteString dispData;                                                                  
92
93                         LvnoSearchFunctional(LPCTSTR in_lvNo):lvNo(in_lvNo){}
94
95                         bool operator()(CSubLiveNoComboBox::LiveInfo &listInfo){
96                                 return listInfo.second == lvNo;
97                         }
98
99                 };
100
101
102                 ///
103                 ///\83R\83\81\83\93\83g\8eó\90M
104                 ///
105                 class CLiveUserData {
106
107
108                         friend CNliteMainFrame;
109                 private:
110
111                         CNliteMainFrame &self;
112                         
113
114                 public:
115
116                         ///
117                         ///\83R\83\93\83X\83g\83\89\83N\83^
118                         ///
119                         CLiveUserData(CNliteMainFrame &self);
120                         
121
122                         ///
123                         ///\90Ú\91±\8aJ\8en\8e\9e\8f\88\97\9d
124                         ///
125                         VOID OnConnect();
126                         
127                         ///
128                         ///\83R\83\81\83\93\83g\8eó\90M\8aJ\8en\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
129                         ///
130                         VOID OnChatReceveStart(CNicoLiveStream &stream,NicoLiveThreadComment_P threadComment);
131
132
133                         ///
134                         ///1\83R\83\81\83\93\83g\8eó\90M\82µ\82½\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
135                         ///\8eó\90M\82µ\82½\83R\83\81\83\93\83g\82ð\83o\83b\83t\83@\82É\8ai\94[
136                         ///
137                         VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
138                         
139
140                         ///
141                         ///\83`\83\83\83b\83g\8eó\90M\8am\92è\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
142                         ///\8eå\82É\8eó\90M\82µ\82½\83R\83\81\83\93\83g\82Ì\95`\89æ\8f\88\97\9d\82ð\8ds\82¤
143                         ///
144                         VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
145
146                         ///
147                         ///\83R\83\81\83\93\83g\91\97\90M\8c\8b\89Ê\8eó\90M\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
148                         ///
149                         VOID OnChatSendResult(NicoLiveSendResultComment_P sendResult);
150
151
152                         ///
153                         ///\83n\81[\83g\83r\81[\83g\91\97\90M\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N
154                         ///
155                         VOID OnHeartBeat(NicoLiveHeartBeat_P heartBeat);
156
157
158                         ///
159                         ///\90Ø\92f\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N
160                         ///
161                         VOID OnDisconnect();
162
163                 };
164
165                 friend CSubLiveNoComboBox;
166         public:
167
168                 typedef CFrameWindowImpl<CNliteMainFrame> baseWindow;
169
170                 // \83E\83B\83\93\83h\83E\83N\83\89\83X\96¼\81A\8b¤\92Ê\83\8a\83\\81[\83XID\81A\83X\83^\83C\83\8b\81A\94w\8ci\90F\82ð\93o\98^
171                 DECLARE_FRAME_WND_CLASS(NLITE_MAINWINDOW, IDC_NLITE)
172
173         private:
174                 CCommentView commentView;                                                                       //\83R\83\81\83\93\83g\95\\8e¦\83E\83B\83\93\83h\83E
175                 CStatusBarCtrl statusBar;                                                                       //\83X\83e\81[\83^\83X\83o\81[
176                 CLiveUserData userData;                                                                         //\83C\83x\83\93\83g\83n\83\93\83h\83\89\97p\83N\83\89\83X
177                 CSubLiveNoComboBox subLiveNoComboBox;                                           //\90\95ú\91\97\94Ô\8d\86\93ü\97Í\97p\83R\83\93\83{\83{\83b\83N\83X(\83T\83u\83N\83\89\83X)
178                 CCommentWriteWindow commentWriteWindow;                                         //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\97p\83N\83\89\83X
179                 CTabCtrl tabctrl;                                                                                       //\83^\83u\83R\83\93\83g\83\8d\81[\83\8b
180                 HFONT hTabFont;                                                                                         //\83^\83u\83E\83B\83\93\83h\83E\97p\82Ì\83t\83H\83\93\83g                            
181                 CComboBoxEx lvNoCombo;                                                                          //\90\95ú\91\97\94Ô\8d\86\93ü\97Í\97p\83R\83\93\83{\83{\83b\83N\83X
182                 INT_PTR statusBarHeight;                                                                        //\83X\83e\81[\83^\83X\83o\81[\82Ì\8d\82\82³
183                 INT_PTR toolBarHeight;                                                                          //\83c\81[\83\8b\83o\81[\82Ì\8d\82\82³
184                 CNicoVideoAuth nicoVideoAuth;                                                           //\83j\83R\83j\83R\93®\89æ\94F\8fØ\97p\83I\83u\83W\83F\83N\83g
185                 CNicoLiveStream nicoLiveStream;                                                         //\83j\83R\83j\83R\90\95ú\91\97\83I\83u\83W\83F\83N\83g
186                 CMultiPaneStatusBarCtrl m_hStatusBar;                                           //\83}\83\8b\83`\83y\83C\83\93\83X\83e\81[\83^\83X\83o\81[
187                 CProgressBarCtrl  m_progresBar;                                                         //\83v\83\8d\83O\83\8c\83X\83o\81[
188                 CListenerSettingWindow listenerSettingWindow;                           //\83\8a\83X\83i\81[\90Ý\92è\83E\83B\83\93\83h\83E
189                 CComAutoCriticalSection lvNoBufCS;                                                      //\90\95ú\91\97\94Ô\8d\86\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93
190                 CString lvNoBuffer;                                                                                     //\90\95ú\91\97\94Ô\8d\86\83o\83b\83t\83@
191         private:
192                 // \83\81\83b\83Z\81[\83W\83t\83B\83\8b\83^\8f\88\97\9d
193                 virtual BOOL PreTranslateMessage(MSG* pMsg);
194
195                 // \83A\83C\83h\83\8b\8f\88\97\9d
196                 virtual BOOL OnIdle();
197
198                 
199                 
200
201         public:
202
203                 ///
204                 ///\83R\83\93\83X\83g\83\89\83N\83^
205                 ///
206                 CNliteMainFrame();
207                 
208
209                 ///
210                 ///\83f\83X\83g\83\89\83N\83^
211                 ///
212                 ~CNliteMainFrame();
213                 
214
215                 
216                 BEGIN_UPDATE_UI_MAP(CNliteMainFrame)
217                         // \83G\83\93\83g\83\8a\82È\82µ
218                 END_UPDATE_UI_MAP()
219                 
220                 // \83\81\83b\83Z\81[\83W\83}\83b\83v
221                 BEGIN_MSG_MAP_EX(CNliteMainFrame)
222                         MSG_WM_CREATE(OnCreate)
223                         MSG_WM_CLOSE(OnClose)
224                         MSG_WM_DESTROY(OnDestroy)
225                         MESSAGE_HANDLER(WM_SIZE,OnSize)
226                         MSG_WM_SIZING(OnSizing)
227                         MESSAGE_HANDLER(WM_SETCURSOR,OnSetCursor)
228                         MESSAGE_HANDLER_EX(UM_CLICK_CHATNO,OnClickChatNo)
229                         MESSAGE_HANDLER_EX(UM_UPDATEUI,OnUpDateUI)
230                         MESSAGE_HANDLER_EX(UM_UNLOCK_LVNOBUFFER,OnUnlockLvNoBuffer)
231                         MESSAGE_HANDLER_EX(UM_CLICK_USERNAME,OnClickUserName)
232                         COMMAND_ID_HANDLER_EX(IDM_EXIT, OnMenuExit)
233                         COMMAND_ID_HANDLER_EX(IDM_ABOUT,OnMenuAbount)
234                         COMMAND_ID_HANDLER_EX(IDM_COOKIE,OnCookie)
235                         COMMAND_ID_HANDLER_EX(IDM_VIEW_PREFERENCE,OnViewPreference)
236                         COMMAND_CODE_HANDLER_EX(CBN_SELCHANGE,OnCbSelChange)
237                         NOTIFY_HANDLER(ATL_IDW_TOOLBAR,RBN_HEIGHTCHANGE,OnRbnHeightChange)
238                         // CFrameWindowImpl\83N\83\89\83X\82Ö\83`\83F\81[\83\93
239                         CHAIN_MSG_MAP(CFrameWindowImpl<CNliteMainFrame>)
240                 END_MSG_MAP()
241
242                 
243                 ///
244                 ///\8f\89\8aú\89»\8f\88\97\9d
245                 ///
246                 VOID Initialize(LPCTSTR localAppDataPath);
247                 
248                 ///
249                 ///\8fI\97¹\8f\88\97\9d
250                 ///
251                 VOID Finalaize();
252                 
253                 
254                 ///
255                 ///\97á\8aO\94­\90\8e\9e\82Ì\8f\88\97\9d
256                 ///
257                 VOID OnException();
258
259         private:
260
261                 ///
262                 ///\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82Æ\82«\82Ì\8f\88\97\9d
263                 ///
264                 VOID OnClose();
265
266                 ///
267                 ///\83E\83B\83\93\83h\83E\94j\8aü\8e\9e\82Ì\8f\88\97\9d
268                 ///
269                 VOID OnDestroy();
270
271                 ///
272                 ///\83c\81[\83\8b\83o\81[\8d\82\82³\95Ï\8dX
273                 ///
274                 LRESULT OnRbnHeightChange(INT_PTR wParam,LPNMHDR lParam,BOOL &bHandled);
275                 
276
277                 ///
278                 ///\82±\82Ì\83E\83B\83\93\83h\83E\82ÌUI\8dX\90V
279                 ///
280                 LRESULT OnUpDateUI(UINT uMsg,WPARAM wParam,LPARAM lParam);
281
282                 ///
283                 ///\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
284                 ///
285                 LRESULT OnClickChatNo(UINT uMsg,WPARAM wParam,LPARAM lParam);
286                 
287
288                 ///
289                 ///\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
290                 ///
291                 LRESULT OnClickUserName(UINT uMsg,WPARAM wParam,LPARAM lParam);
292
293
294                 ///
295                 ///\83T\83C\83Y\95Ï\8dX\92\86\8f\88\97\9d
296                 ///
297                 VOID OnSizing(UINT wParam,LPRECT lParam);
298                 
299                 ///
300                 ///\83T\83C\83Y\95Ï\8dX\8cã
301                 ///
302                 LRESULT OnSize(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled);
303                 
304                 
305                 ///
306                 ///\8eq\83E\83B\83\93\83h\83E\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
307                 ///
308                 VOID ChangeSize(const SIZE& client);
309
310                 ///
311                 ///\83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\8d\80\96Ú\82ª\95Ï\8dX\82³\82ê\82½
312                 ///
313                 LRESULT OnCbSelChange(UINT hiWparam,int loWparam,HWND lParam);
314
315                 ///
316                 ///\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
317                 ///
318                 LRESULT OnCreate(LPCREATESTRUCT lpcs);
319
320
321                 ///
322                 ///\83j\83R\90\95ú\91\97\82É\90Ú\91±
323                 ///
324                 BOOL ConnectNicoLive(LPCTSTR liveNo);
325
326
327                 ///
328                 ///\83}\83E\83X\83J\81[\83\\83\8b\95Ï\8dX\8f\88\97\9d
329                 ///
330                 LRESULT OnSetCursor(LRESULT msg,WPARAM wParam,LPARAM lParam,BOOL &bHandled);
331
332
333                 //\83\81\83j\83\85\81[\82©\82ç\83t\83@\83C\83\8b\82ð\8fI\97¹\82ð\91I\91ð
334                 VOID OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl);
335
336                 //\83\81\83j\83\85\81[\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83o\81[\83W\83\87\83\93\8fî\95ñ\95\\8e¦
337                 VOID OnMenuAbount(UINT uNotifyCode,int nID,HWND hWndCtl);
338
339                 //\83N\83b\83L\81[\82Ì\90Ý\92è
340                 VOID OnCookie(UINT uNotifyCode,int nID,HWND hWndCtl);
341
342                 //\83r\83\85\81[\83A\90Ý\92è
343                 VOID OnViewPreference(UINT uNotifyCode,int nID,HWND hWndCtl);
344
345                 ///
346                 ///\90\95ú\91\97\94Ô\8d\86\83o\83b\83t\83@\82Ì\83\8d\83b\83N\82ð\89ð\8f\9c
347                 ///
348                 LRESULT OnUnlockLvNoBuffer(UINT uMsg,WPARAM wParam,LPARAM lParam);
349
350
351                 ///
352                 ///CNicoLiveStream\82Ì\83R\81[\83\8b\83o\83b\83N\97p\8aÖ\90\94
353                 ///
354                 static NLIB_RESULT LiveCallBack(NICOLIVE_EVENT eventType,NicoLiveStream_P pNicoLiveStream,LPVOID option,NICOLIVE_PARAM param1,NICOLIVE_PARAM param2);
355
356                 
357                 ///
358                 ///\90Ú\91±\83X\83\8c\83b\83h
359                 ///
360                 static VOID ConnectingThread(LPVOID userData);
361         };
362
363
364
365
366         
367
368 }