OSDN Git Service

2012/01/27 17:30:53
[nlite/nlite.git] / nlite / nlite_mainframe.cpp
1 #include "stdafx.h"
2 #include "nlite_include.h"
3
4
5 namespace nlite{
6
7 static const RECT commentViewSize = {5,0,5,0};
8
9 ///
10 ///\92è\90\94
11 ///
12 enum{
13         IDC_COMBO_REBAR = 301,
14         IDC_COMBO_TITLE = 302
15 };
16
17
18
19 ///
20 ///\83E\83B\83\93\83h\83E\8dÅ\92á\83T\83C\83Y
21 ///
22 const static SIZE lowestFrameSize = {300,300};
23
24
25
26 CNliteMainFrame::~CNliteMainFrame(){
27
28         DeleteObject(hTabFont);
29 }
30
31 CNliteMainFrame::CNliteMainFrame()
32         :userData(*this),
33         subLiveNoComboBox(*this),
34         commentWriteWindow(nicoLiveStream),
35         commentView(nicoLiveStream)
36 {
37         LOGFONT lf = {0};
38
39         lf.lfHeight = 10;
40         lf.lfCharSet = SHIFTJIS_CHARSET;
41         hTabFont = CreateFontIndirect(&lf);
42 }
43
44
45 // \83\81\83b\83Z\81[\83W\83t\83B\83\8b\83^\8f\88\97\9d
46 BOOL CNliteMainFrame::PreTranslateMessage(MSG* pMsg){
47         // \8aî\92ê\83N\83\89\83X\82ÌPreTranslateMessage\82ð\8cÄ\82Ñ\8fo\82·
48         return CFrameWindowImpl<CNliteMainFrame>::PreTranslateMessage(pMsg);
49 }
50
51 // \83A\83C\83h\83\8b\8f\88\97\9d
52 BOOL CNliteMainFrame::OnIdle(){
53         return FALSE;
54 }
55
56 //\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
57 VOID CNliteMainFrame::ChangeSize(const SIZE& client){
58
59         
60         UINT_PTR tabheight = client.cy - (toolBarHeight + statusBarHeight + commentWriteWindow.commentWriteHeight);
61
62         
63         RECT tabWindowRect = {0};
64         RECT commentViewRect = {0};
65         RECT commentWriteWindowRect = {0};
66
67
68         tabWindowRect.left = 0;
69         tabWindowRect.top = toolBarHeight;
70         tabWindowRect.right =  client.cx - tabWindowRect.left;
71         tabWindowRect.bottom = tabWindowRect.top + tabheight;
72         
73         
74         commentWriteWindowRect.left = 0;
75         commentWriteWindowRect.top = tabWindowRect.bottom;
76         commentWriteWindowRect.right = commentWriteWindowRect.left + client.cx;
77         commentWriteWindowRect.bottom = commentWriteWindowRect.top + commentWriteWindow.commentWriteHeight;
78
79
80         
81
82         tabctrl.MoveWindow(tabWindowRect.left,tabWindowRect.top,tabWindowRect.right - tabWindowRect.left ,tabWindowRect.bottom - tabWindowRect.top);
83         
84         
85         tabctrl.GetClientRect(&commentViewRect);
86         tabctrl.AdjustRect(FALSE,&commentViewRect);
87
88         commentView.MoveWindow(commentViewRect.left, commentViewRect.top,commentViewRect.right - commentViewRect.left, commentViewRect.bottom - commentViewRect.top);
89
90         commentWriteWindow.MoveWindow(commentWriteWindowRect.left,commentWriteWindowRect.top,commentWriteWindowRect.right - commentWriteWindowRect.left ,commentWriteWindowRect.bottom - commentWriteWindowRect.top);
91         commentWriteWindow.Invalidate();
92         ::InvalidateRect(m_hWndStatusBar,NULL,TRUE);
93
94 //      tabctrl.SetWindowPos(*this,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
95 //      commentWriteWindow.SetWindowPos(*this,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
96         return;
97 }
98
99 LRESULT CNliteMainFrame::OnCbSelChange(UINT hiWparam,int loWparam,HWND lParam){
100
101         if(lParam == this->lvNoCombo){
102                 INT_PTR cursel = this->lvNoCombo.GetCurSel();
103                 if(cursel == CB_ERR)goto end;
104                 auto it = this->subLiveNoComboBox.liveInfoList.begin();
105                 std::advance(it,cursel);
106                 this->ConnectNicoLive(it->second);
107
108         }
109
110 end:
111
112         return 0;
113 }
114
115 LRESULT CNliteMainFrame::OnCreate(LPCREATESTRUCT lpcs){
116
117         
118         // \83X\83e\81[\83^\83X\83o\81[\82ð\8dì\90¬
119         m_hWndStatusBar = m_hStatusBar.Create(*this);
120         UIAddStatusBar(m_hWndStatusBar);
121         // \83X\83e\81[\83^\83X\83o\81[\82É\83y\83C\83\93\82ð\90Ý\92è
122         //INT_PTR nPanes[] = {ID_DEFAULT_PANE, IDS_PANE_TIME};
123         //m_hStatusBar.SetPanes(nPanes, sizeof(nPanes)/sizeof(nPanes[0]));
124         //progresBar.Create(m_hWnd,0,NULL,);
125         //m_hStatusBar.SetClipboardViewer
126         tabctrl.Create(m_hWnd,0,NULL,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_DLGFRAME );
127         commentView.Create(tabctrl.m_hWnd);
128         
129         commentWriteWindow.Create(m_hWnd,0,NULL,WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN  );
130         CreateSimpleReBar();
131         HWND hWndToolBar = CreateSimpleToolBarCtrl(m_hWnd,IDC_NLITE, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE);
132         lvNoCombo.Create(m_hWnd, CRect(0, 0, 100, 100), NULL,WS_CHILD | WS_VISIBLE | WS_VSCROLL  | CBS_DROPDOWN | CBS_AUTOHSCROLL, 0, IDC_COMBO_REBAR);
133         lvNoCombo.LimitText(LENGTH_512);
134
135         subLiveNoComboBox.SubclassWindow(lvNoCombo.GetEditCtrl());
136         lvNoCombo.SetFont(AtlGetDefaultGuiFont());
137         
138         
139
140         //AddSimpleReBarBand(hWndToolBar);
141         AddSimpleReBarBand(lvNoCombo,TEXT("\95ú\91\97URL"));
142         SizeSimpleReBarBands();
143         
144         //tabctrl.SetWindowPos(*this,0,0,0,0,SWP_SHOWWINDOW);
145         
146         tabctrl.SetFont(hTabFont);
147         tabctrl.AddItem(TCIF_TEXT | TCIF_PARAM, _T("\83R\83\81\83\93\83g\88ê\97\97"), 0, (DWORD)commentView.m_hWnd);
148
149         
150                 
151         // \83\81\83b\83Z\81[\83W\83\8b\81[\83v\82É\83\81\83b\83Z\81[\83W\83t\83B\83\8b\83^\82Æ\83A\83C\83h\83\8b\83n\83\93\83h\83\89\82ð\92Ç\89Á
152         CMessageLoop* pLoop = _Module.GetMessageLoop();
153         pLoop->AddMessageFilter(this);
154         pLoop->AddIdleHandler(this);
155
156         RECT wndRect;
157         this->GetWindowRect(&wndRect);
158         
159         LONG cyMaxImized = GetSystemMetrics (SM_CYMAXIMIZED);
160         wndRect.bottom = nliteProperty.mfp.windowSize.cy != 0 ? nliteProperty.mfp.windowSize.cy : (LONG)cyMaxImized / 2;
161         wndRect.right = nliteProperty.mfp.windowSize.cx != 0 ? nliteProperty.mfp.windowSize.cx : commentViewSize.left + commentViewSize.right + 20 + commentView.GetColumnHolSizeSum();
162
163         
164
165         RECT statusbarRect;
166         ::GetClientRect(m_hWndStatusBar,&statusbarRect);
167
168         statusBarHeight = statusbarRect.bottom - statusbarRect.top;
169         
170         
171
172         this->MoveWindow(wndRect.left,wndRect.top,wndRect.right,wndRect.bottom);
173         
174         
175         
176
177         return 0;
178 }
179
180
181
182 VOID CNliteMainFrame::Initialize(LPCTSTR localAppDataPath){
183
184         nliteProperty.ReadProperty();
185
186         commentView.SetProperty(nliteProperty.cvp);
187
188         if(nliteProperty.gp.browserType == BT_NOSETTING){
189                 nliteProperty.CookieSetting();
190                 while(nliteProperty.gp.browserType == BT_NOSETTING){
191                         ::MessageBox(NULL,TEXT("\83u\83\89\83E\83U\83^\83C\83v\82ð\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B\82±\82ê\88È\8aO\82Ì\83u\83\89\83E\83U\82Í\8c»\8dÝ\8eg\97p\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ"),TEXT("\83u\83\89\83E\83U\83^\83C\83v\8ew\92è\83G\83\89\81["),MB_OK);
192                         nliteProperty.CookieSetting();
193                 }
194         }
195                         
196         nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
197         nicoLiveStream.SetResFrom(1000);
198
199         return;
200                         
201 }
202
203 VOID CNliteMainFrame::OnClose(){
204         this->ShowWindow(SW_HIDE);
205         nicoLiveStream.DisConnect();
206         this->DestroyWindow();
207
208         return;
209 }
210
211 VOID CNliteMainFrame::OnDestroy(){
212         
213         commentView.DestroyWindow();
214                         
215         PostQuitMessage(0);
216         return;
217 }
218
219
220 VOID CNliteMainFrame::OnException(){
221
222         nicoLiveStream.DisConnect();
223
224 }
225
226 //\83\81\83j\83\85\81[\82©\82ç\83t\83@\83C\83\8b\82ð\8fI\97¹\82ð\91I\91ð
227 VOID CNliteMainFrame::OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){
228         PostMessage(WM_CLOSE);
229 }
230
231 //\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¦
232 VOID CNliteMainFrame::OnMenuAbount(UINT uNotifyCode,int nID,HWND hWndCtl){
233         appInfo->show();
234 }
235
236 VOID CNliteMainFrame::Finalaize(){
237
238         nliteProperty.cvp = commentView.GetProperty();
239         nliteProperty.WriteProperty();
240 }
241
242 VOID CNliteMainFrame::OnViewPreference(UINT uNotifyCode,int nID,HWND hWndCtl){
243
244
245         return;
246 }
247
248 //\83N\83b\83L\81[\82Ì\90Ý\92è
249 VOID CNliteMainFrame::OnCookie(UINT uNotifyCode,int nID,HWND hWndCtl){
250         nliteProperty.CookieSetting();
251                         
252         while(nliteProperty.gp.browserType == BT_NOSETTING){
253                 ::MessageBox(NULL,TEXT("\83u\83\89\83E\83U\83^\83C\83v\82ð\8ew\92è\82µ\82Ä\82­\82¾\82³\82¢\81B\82±\82ê\88È\8aO\82Ì\83u\83\89\83E\83U\82Í\8c»\8dÝ\8eg\97p\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ"),TEXT("\83u\83\89\83E\83U\83^\83C\83v\8ew\92è\83G\83\89\81["),MB_OK);
254                 nliteProperty.CookieSetting();
255         }
256                         
257
258         nicoVideoAuth.SetBrowserType(nliteProperty.gp.browserType);
259
260 }
261
262
263 BOOL CNliteMainFrame::ConnectNicoLive(LPCTSTR liveNo){
264         
265         this->lvNoCombo.GetEditCtrl().SetReadOnly(TRUE);
266         this->EnableWindow(FALSE);
267         nicoLiveStream.DisConnect();
268         commentView.OnConnect();
269         BOOL rslt = FALSE;
270         NLIB_RESULT code = nicoLiveStream.Connect(nicoVideoAuth,liveNo,LiveCallBack,&userData);
271
272         //\83G\83\89\81[\83R\81[\83h\8f\88\97\9d
273         switch(code){
274         
275                 //\90³\8fí\8fI\97¹
276         case NLIB_ERR_OK:
277
278                 rslt = TRUE;
279                 break;
280
281                 //\91z\92è\82³\82ê\82½\83G\83\89\81[\83R\81[\83h
282         case NLIB_ERR_COOKIE_FAILED:
283         case NLIB_LIVENO_FAILED_UNDEFEINE:
284         case NLIB_GETPLAYERSTATUS_FAILED_CONNECT:
285         case NLIB_ERR_GETPLAYERSTATUS_INVALID_LV:
286         case NLIB_ERR_GETPLAYERSTATUS_INVALID_THREAD:
287         case NLIB_ERR_GETPLAYERSTATUS_CLOSED:
288         case NLIB_ERR_GETPLAYERSTATUS_UNKNOWN_ERROR:
289         case NLIB_ERR_GETPLAYERSTATUS_SERVER_ERROR:
290         case NLIB_ERR_GETPLAYERSTATUS_DELETED:
291         case NLIB_ERR_GETPLAYERSTATUS_FULL:
292         case NLIB_ERR_GETPLAYERSTATUS_PERMISSION_DENIED:
293         case NLIB_ERR_GETPLAYERSTATUS_ACCESS_LOCKED:
294         case NLIB_ERR_GETPLAYERSTATUS_REQUIRE_COMMUNITY_MEMBER:
295         case NLIB_ERR_GETPLAYERSTATUS_COMINGSOON:
296         case NLIB_ERR_GETPLAYERSTATUS_NOTFOUND:
297         case NLIB_ERR_GETPLAYERSTATUS_NOTLOGIN:
298         case NLIB_ERR_GETPLAYERSTATUS_UNKNOWN:
299         case NLIB_ERR_GETPLAYERSTATUS_MAINTENANCE:
300         case NLIB_ERR_GETPLAYERSTATUS_NOT_PERMITTED:
301         case NLIB_ERR_GETPLAYERSTATUS_REQUIRE_ACCEPT_PRINT_TIMESHIFT_TICKET:
302         case NLIB_ERR_GETPLAYERSTATUS_TSARCHIVE:
303         case NLIB_ERR_GETPLAYERSTATUS_USERTIMESHIFT:
304         case NLIB_ERR_GETPLAYERSTATUS_UNDEFINED:
305         case NLIB_ERR_GETPLAYERSTATUS_NOAUTH:
306
307                 this->subLiveNoComboBox.AgreeInputLvNo();
308                 ::MessageBox(NULL,NLIB_GetErrorMessage(code),TEXT("\95ú\91\97\90Ú\91±\83G\83\89\81["),MB_ICONERROR | MB_OK);
309                 rslt = FALSE;
310                 break;
311
312
313                 //\91z\92è\82³\82ê\82Ä\82¢\82È\82¢\83G\83\89\81[\83R\81[\83h
314         default:
315                 
316                 this->subLiveNoComboBox.AgreeInputLvNo();
317                 UnexpectedErrorMessageShow( TEXT("\95ú\91\97\90Ú\91±\92\86\82É"),NLIB_GetErrorMessage(code),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
318                 rslt = FALSE;
319                 
320                 break;
321
322         }
323
324
325         return rslt;
326
327 }
328
329
330 //\83T\83C\83Y\95Ï\8dX\8cã
331 LRESULT CNliteMainFrame::OnSize(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled){
332
333
334         SIZE clientSize;
335         clientSize.cx = LOWORD(lParam);
336         clientSize.cy = HIWORD(lParam);
337         ChangeSize(clientSize);
338
339         bHandled = FALSE;
340                         
341                         
342
343         return 0;
344 }
345
346
347 ///
348 ///\83T\83C\83Y\95Ï\8dX\92\86\8f\88\97\9d
349 ///
350 VOID CNliteMainFrame::OnSizing(UINT wParam,LPRECT lParam){
351                         
352         if(lParam->right - lParam->left < lowestFrameSize.cx){
353                 lParam->right = lParam->left + lowestFrameSize.cx;
354         }
355
356         if(lParam->bottom - lParam->top < lowestFrameSize.cy){
357
358                 lParam->bottom = lParam->top + lowestFrameSize.cy;
359         }
360                         
361 }
362
363
364 //\83c\81[\83\8b\83o\81[\8d\82\82³\95Ï\8dX
365 LRESULT CNliteMainFrame::OnRbnHeightChange(INT_PTR wParam,LPNMHDR lParam,BOOL &bHandled){
366
367         RECT toolbarRect;
368         ::GetClientRect(m_hWndToolBar,&toolbarRect);
369         toolBarHeight = toolbarRect.bottom - toolbarRect.top;
370
371         RECT client;
372         GetClientRect(&client);
373
374         ChangeSize( _WTYPES_NS::CSize(client.right - client.left,client.bottom - client.top));
375
376
377
378         return 0;
379 }
380
381
382
383 NLIB_RESULT CNliteMainFrame::LiveCallBack(NICOLIVE_EVENT eventType,NicoLiveStream_P pNicoLiveStream,LPVOID option,NICOLIVE_PARAM param1,NICOLIVE_PARAM param2){
384
385         CLiveUserData &userData = (*(CLiveUserData*)option);
386
387         try{
388                 
389
390                 switch(eventType){
391
392                 case NICOLIVE_EVENT_RECEVE_CONNECTRESULT:
393
394                         userData.OnChatReceveStart(userData.self.nicoLiveStream);
395
396                         break;
397
398                 case NICOLIVE_EVENT_RECEVE_CHAT:
399
400                         userData.OnChatReceve((NicoLiveChat_P) param1,param2);
401
402                         break;
403
404                 case NICOLIVE_EVENT_RECEVE_CHATSETTLE:
405
406                         userData.OnChatReceveSettle(param1,param2);
407
408                         break;
409
410                 case NICOLIVE_EVENT_RECEVE_CHATSENDRESULT:
411
412                         userData.OnChatSendResult((NicoLiveSendResultComment_P)param1);
413
414                         break;
415
416                 case NICOLIVE_EVENT_SEND_HEARTBEAT:
417
418                         break;
419
420                 case NICOLIVE_EVENT_ERR_CONNECT:
421
422                         throw NLiveException(TEXT("\90Ú\91±\83G\83\89\81[\82Å\82·"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
423
424                         break;
425
426                 default:
427
428                         throw NLiveException(TEXT("\97\\8aú\82µ\82È\82¢\83\81\83b\83Z\81[\83W\82ª\91\97\90M\82³\82ê\82Ü\82µ\82½"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
429
430                         break;
431                 }
432
433         } catch(Exception e){
434                 UnexpectedErrorMessageShow(TEXT("\83n\83\93\83h\83\8b\82³\82ê\82Ä\82¢\82È\82¢\83G\83\89\81["),e.what(),e.getLineNo(),e.getFileName(),e.getFunctionName());
435         
436         } catch(std::exception e){
437                 UnexpectedErrorMessageShow(TEXT("\83n\83\93\83h\83\8b\82³\82ê\82Ä\82¢\82È\82¢\95s\96¾\82Ì\83G\83\89\81["),CComBSTR(e.what()),-1,TEXT("\94­\90\83t\83@\83C\83\8b\82ª\93Á\92è\8fo\97\88\82Ü\82¹\82ñ"),TEXT("\94­\90\8aÖ\90\94\82ª\93Á\92è\82Å\82«\82Ü\82¹\82ñ"));
438         }
439         
440
441         
442
443         return NLIB_ERR_OK;
444 }
445
446
447 LRESULT CNliteMainFrame::OnSetCursor(LRESULT msg,WPARAM wParam,LPARAM lParam,BOOL &bHandled){
448
449         
450         BOOL rslt = FALSE;
451         
452         if(this->subLiveNoComboBox.untilConnectingFlag == TRUE){
453                 ::SetCursor(::LoadCursorW(NULL,IDC_WAIT));
454                 bHandled = TRUE;
455                 rslt = TRUE;
456         } else {
457
458                 bHandled = FALSE;
459         }
460         
461
462         return TRUE;
463
464 }
465
466
467 //
468 //CSubLiveNoComboBox
469 ////////////////////////////////////
470
471 CNliteMainFrame::CSubLiveNoComboBox::CSubLiveNoComboBox(CNliteMainFrame &in_self):self(in_self),untilConnectingFlag(FALSE){}
472
473 static VOID AgreeEnterKeyThread(LPVOID userData){
474
475         Sleep(1000);
476         auto noCombo = (CNliteMainFrame::CSubLiveNoComboBox*) userData;
477         noCombo->AgreeInputLvNo();
478
479         return;
480 }
481
482 VOID CNliteMainFrame::CSubLiveNoComboBox::OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam){
483         if(wParam == VK_RETURN){
484                                         
485                 cs.Lock();
486                                         
487                 //INT_PTR no = self.lvNoCombo.GetCurSel();
488                 if(untilConnectingFlag == FALSE){
489                         untilConnectingFlag = TRUE;
490                         std::vector<TCHAR> buffer(this->GetWindowTextLengthW() + 1); 
491                         ::GetWindowTextW(this->m_hWnd,&buffer[0],buffer.size());
492                         
493                         
494                         self.ConnectNicoLive(&buffer[0]);
495                 }
496                                         
497                 cs.Unlock();
498                                         
499                                         
500         }
501         return;
502 }
503
504
505
506 VOID CNliteMainFrame::CSubLiveNoComboBox::AddLiveInfo(CNicoLiveStream &stream,LvnoSearchFunctional &functional){
507         
508         CNLiteString dispComboString;
509         dispComboString += stream.GetId();
510         dispComboString += TEXT("\81@-");
511         dispComboString += stream.GetDefaultCommunity();
512         dispComboString += TEXT("\81@title\81F");
513         dispComboString += stream.GetTitle();
514
515         if(std::find_if(liveInfoList.begin(),liveInfoList.end(),functional) == liveInfoList.end()){
516                 liveInfoList.push_back(LiveInfo(dispComboString,stream.GetId()));
517                 
518                 self.lvNoCombo.InsertItem(self.lvNoCombo.GetCount(),dispComboString,0,0,0,0);
519         
520         } 
521         functional.dispData = dispComboString;
522
523         
524
525
526         return;
527 }
528
529
530 VOID CNliteMainFrame::CSubLiveNoComboBox::AgreeInputLvNo(){
531         cs.Lock();
532         self.lvNoCombo.GetEditCtrl().SetReadOnly(FALSE);
533         self.EnableWindow(TRUE);
534         untilConnectingFlag = FALSE;
535         POINT mousePoint;
536         ::GetCursorPos(&mousePoint);
537         ::SetCursorPos(mousePoint.x,mousePoint.y);
538         cs.Unlock();
539 }
540
541
542 //
543 //CLiveUserData
544 /////////////////////////////////////////////////////////////////////////
545
546 CNliteMainFrame::CLiveUserData::CLiveUserData(CNliteMainFrame &self):self(self)
547 {}
548
549
550
551 VOID CNliteMainFrame::CLiveUserData::OnConnect(){
552
553         self.commentView.OnConnect();
554
555 }
556
557
558 VOID CNliteMainFrame::CLiveUserData::OnChatReceveStart(CNicoLiveStream &stream){
559         
560         LvnoSearchFunctional functional(stream.GetId());
561         self.commentWriteWindow.OnChatReceveStart(stream);
562         self.subLiveNoComboBox.AddLiveInfo(stream,functional);
563         self.subLiveNoComboBox.SetWindowText(functional.dispData);
564         self.subLiveNoComboBox.AgreeInputLvNo();
565         return;
566 }
567
568 VOID CNliteMainFrame::CLiveUserData::OnChatReceve(NicoLiveChat_P chat,UINT_PTR count){
569
570         self.commentView.OnChatReceve(chat,count);
571
572 }
573
574 VOID CNliteMainFrame::CLiveUserData::OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum){
575
576         self.commentView.OnChatReceveSettle(commentCount,commentCountSum);
577         
578         return;
579 }
580
581 VOID CNliteMainFrame::CLiveUserData::OnChatSendResult(NicoLiveSendResultComment_P sendResult){
582         self.commentWriteWindow.OnSendChatResult();
583         return;
584 }
585
586 }