2 #include "nlite_include.h"
7 const static SIZE commentColorBoxSize = {35,0};
9 const static LPCTSTR ANONYMOUS_MAILCOMMAND = TEXT("184");
10 const static LPCTSTR ANONYMOUS_BOTTONSTRING = ANONYMOUS_MAILCOMMAND;
12 const static LPCTSTR WRITE_BOTTONSTRING = TEXT("
\8f\91\82«
\8d\9e\82Ý");
13 const static LPCTSTR CHECKBUTTON_HIDDENSTRING = TEXT(" ");
15 const static RECT COMMENTWRITEWINDOW_SEPARATEFSIZE = {0,5,0,5};
16 const static UINT_PTR COMMENTWRITEWINDOW_SIDESEPARATESIZE = 5;
17 const static UINT_PTR INIT_COMMENTWRITE_MAXLENGTH = 60;
18 const static UINT_PTR CHECKBUTTON_SUBSCRIPT_HEIGHT = 10;
19 const static LPCTSTR DEFAULT_COMMENTCOLOR = TEXT("white");
20 const static LPCTSTR DEFAULT_COMMENTSIZE = TEXT("medium");
21 const static LPCTSTR DEFAULT_COMMENTPOS = TEXT("naka");
22 const static COLORREF MAX_COLOR = 0xFFFFFF;
26 namespace generalUser{
27 const CommentColorInfo COMMENT_COLORLIST[] = {
28 {DEFAULT_COMMENTCOLOR,PALETTERGB(0xFF,0xFF,0xFF)}, //
\94\92
29 {TEXT("red"),PALETTERGB(0xFF,0x00,0x00)}, //
\90Ô
30 {TEXT("pink"),PALETTERGB(0xFF,0x80,0x80)}, //
\83s
\83\93\83N
31 {TEXT("orange"),PALETTERGB(0xFF,0xC0,0x00)}, //
\83I
\83\8c\83\93\83W
32 {TEXT("yellow"),PALETTERGB(0xFF,0xFF,0x00)}, //
\89©
\90F
33 {TEXT("green"),PALETTERGB(0x00,0xFF,0x00)}, //
\97Î
34 {TEXT("cyan"),PALETTERGB(0x00,0xFF,0xFF)}, //
\8a¦
\90F
35 {TEXT("blue"),PALETTERGB(0x00,0x00,0xFF)}, //
\90Â
36 {TEXT("purple"),PALETTERGB(0xC0,0x00,0xFF)}, //
\8e\87
40 const CommentSizeInfo COMMENT_SIZELIST[] = {
41 {TEXT("
\95\81\92Ê
\81@"),DEFAULT_COMMENTSIZE}, //
\95\81\92Ê
\83T
\83C
\83Y
42 {TEXT("
\8f¬
\81@"),TEXT("small")} //
\8f¬
\83T
\83C
\83Y
46 const CommentPosInfo COMMENT_POSLIST[] = {
47 {TEXT("
\92Ê
\8fí
\81@"),DEFAULT_COMMENTPOS} //
\92Ê
\8fí
\95\
\8e¦
51 namespace premiumUser{
53 const CommentColorInfo COMMENT_COLORLIST[] = {
54 {TEXT("black"),PALETTERGB(0x00,0x00,0x00)}, //
\8d\95
55 {TEXT("white2"),PALETTERGB(0xCC,0xCC,0x99)}, //
\94\92\82»
\82Ì
\82Q
56 {TEXT("red2"),PALETTERGB(0xCC,0x00,0x33)}, //
\90Ô
\82»
\82Ì
\82Q
57 {TEXT("pink2"),PALETTERGB(0xFF,0x33,0xCC)}, //
\83s
\83\93\83N
\82»
\82Ì
\82Q
58 {TEXT("orange2"),PALETTERGB(0xFF,0x66,0x00)}, //
\83I
\83\8c\83\93\83W
\82»
\82Ì
\82Q
59 {TEXT("yellow2"),PALETTERGB(0x99,0x99,0x00)}, //
\89©
\90F
\82»
\82Ì
\82Q
60 {TEXT("green2"),PALETTERGB(0x00,0xCC,0x66)}, //
\97Î
\82»
\82Ì
\82Q
61 {TEXT("cyan2"),PALETTERGB(0x00,0xCC,0xCC)}, //
\8a¦
\90F
\82»
\82Ì
\82Q
62 {TEXT("blue2"),PALETTERGB(0x33,0x99,0xFF)}, //
\90Â
\82»
\82Ì
\82Q
63 {TEXT("purple2"),PALETTERGB(0x66,0x33,0xCC)} //
\8e\87\82»
\82Ì
\82Q
64 // {TEXT("black2"),PALETTERGB(0x66,0x66,0x66)} //
\8d\95\82»
\82Ì
\82Q
\82Í
\82È
\82¢
\81H
67 const CommentSizeInfo COMMENT_SIZELIST[] = {
68 {TEXT("
\91å
\81@"),TEXT("big")} //
\91å
\83T
\83C
\83Y
73 const CommentPosInfo COMMENT_POSLIST[] = {
74 {TEXT("
\89º
\81@"),TEXT("shita")}, //
\89º
\82É
\95\
\8e¦
75 {TEXT("
\8fã
\81@"),TEXT("ue")} //
\8fã
\82É
\95\
\8e¦
84 static VOID addItemList(CComboBox &combo,T * colorList,UINT_PTR length){
86 UINT_PTR startItemcount = combo.GetCount();
87 length+= startItemcount;
88 for(UINT_PTR index = startItemcount; index < length;index++){
90 combo.AddString(colorList[index - startItemcount].name);
91 combo.SetItemDataPtr(index,(LPVOID)&colorList[index - startItemcount]);
101 static UINT_PTR CalcComboBoxWidth(CComboBox &combo){
106 UINT_PTR itemCount = combo.GetCount();
108 for(UINT_PTR index = 0;index < itemCount;index++){
109 name = ((T*)combo.GetItemDataPtr(index))->name;
110 ::GetTextExtentPoint32(pdc,name,_tcslen(name),&size);
111 rslt = rslt < (UINT_PTR)size.cx ? size.cx : rslt;
117 CCommentWriteWindow::CCommentWriteWindow(CNicoLiveStream &in_nicoLiveStream):
118 commentWriteHeight(0),
119 commentWriteInternalHeight(0),
120 commentWriteMaxLength(INIT_COMMENTWRITE_MAXLENGTH),
121 nicoLiveStream(in_nicoLiveStream),
122 commentSubEdit(*this),
127 UINT_PTR CCommentWriteWindow::GetHeight(){
129 return commentWriteHeight + infoDispHeight - COMMENTWRITEWINDOW_SEPARATEFSIZE.top;
133 LRESULT CCommentWriteWindow::OnCreate(LPCREATESTRUCT lpReateStruct){
135 //
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8f\88\97\9d
137 commentPosBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST ,0,COMMENTPOS_BOX);
138 commentSizeBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,0,COMMENTSIZE_BOX);
139 commentColorBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED ,0,COMMENTCOLOR_BOX);
140 anonymousButton.Create(m_hWnd,0,WC_BUTTON,WS_CHILD | WS_VISIBLE | BS_CHECKBOX | BS_AUTOCHECKBOX ,0,ANONYMOUS_BUTTON);
141 commentSubEdit.Create(m_hWnd,0,WC_EDIT,WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,0,COMMENT_EDIT);
143 commentWriteButton.Create(m_hWnd,0,WC_BUTTON,WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0,COMMENTWRITE_BOTTON);
144 commentPosBox.SetFont(AtlGetDefaultGuiFont());
145 commentSizeBox.SetFont(AtlGetDefaultGuiFont());
146 commentColorBox.SetFont(AtlGetDefaultGuiFont());
149 anonymousButton.SetWindowTextW(CHECKBUTTON_HIDDENSTRING);
150 anonymousButton.SetFont(AtlGetDefaultGuiFont());
151 commentSubEdit.SetFont(AtlGetDefaultGuiFont());
152 commentSubEdit.SetLimitText(commentWriteMaxLength);
153 commentWriteButton.SetWindowTextW(WRITE_BOTTONSTRING);
154 commentWriteButton.SetFont(AtlGetDefaultGuiFont());
155 commentSubEdit.SetWindowTextW(TEXT(""));
157 addItemList(commentColorBox,generalUser::COMMENT_COLORLIST,ARRAY_LENGTH(generalUser::COMMENT_COLORLIST));
158 addItemList(commentSizeBox,generalUser::COMMENT_SIZELIST,ARRAY_LENGTH(generalUser::COMMENT_SIZELIST));
159 addItemList(commentPosBox,generalUser::COMMENT_POSLIST,ARRAY_LENGTH(generalUser::COMMENT_POSLIST));
160 commentColorBox.SetCurSel(0);
161 commentSizeBox.SetCurSel(0);
162 commentPosBox.SetCurSel(0);
164 font = AtlGetDefaultGuiFont();
167 LPCTSTR sample = TEXT(" ");
169 GetTextExtentPoint32(pdc,sample,_tcslen(sample),&thisSize);
170 commentWriteHeight = thisSize.cy + (CHECKBUTTON_SUBSCRIPT_HEIGHT / 2) + COMMENTWRITEWINDOW_SEPARATEFSIZE.top + COMMENTWRITEWINDOW_SEPARATEFSIZE.bottom;
171 infoDispHeight = commentWriteHeight;
172 commentWriteInternalHeight = commentWriteHeight - (COMMENTWRITEWINDOW_SEPARATEFSIZE.top + COMMENTWRITEWINDOW_SEPARATEFSIZE.bottom);
174 LOGFONT anonymousLogFont = {0};
175 anonymousLogFont.lfHeight = CHECKBUTTON_SUBSCRIPT_HEIGHT;
176 anonymousLogFont.lfCharSet = SHIFTJIS_CHARSET;
178 anonymousFont.CreateFontIndirect(&anonymousLogFont);
180 CFontHandle f = AtlGetDefaultGuiFont();
182 f.GetLogFont(timeLogFont);
184 timeLogFont.lfWeight = FW_BOLD;
186 timeFont.CreateFontIndirectW(&timeLogFont);
192 VOID CCommentWriteWindow::OnDestroy(){
193 commentPosBox.DestroyWindow();
194 commentSizeBox.DestroyWindow();
195 commentColorBox.DestroyWindow();
196 anonymousButton.DestroyWindow();
197 commentSubEdit.DestroyWindow();
198 commentWriteButton.DestroyWindow();
204 LRESULT CCommentWriteWindow::OnSize(UINT wParam,SIZE lParam){
208 VOID CCommentWriteWindow::OnPaint(HDC hdc){
212 this->GetClientRect(&clientRect);
214 pdc.FillRect(&clientRect,COLOR_BTNFACE);
219 pdc.SetBkColor(GetSysColor(COLOR_BTNFACE));
224 TCHAR timeString[LENGTH_256];
225 _tcscpy(timeString,TEXT("
\8co
\89ß
\8e\9e\8aÔ:"));
226 LPTSTR timePtr = timeString + _tcslen(timeString);
227 time_t dispTime = static_cast<time_t>(difftime(streamTime,nicoLiveStream.GetStartTime()));
229 BOOL yetStartFlag = FALSE;
232 dispTime = abs(dispTime);
235 tm dispTimeStruct = *gmtime(&dispTime);
237 if(dispTimeStruct.tm_hour > 0 && yetStartFlag == TRUE){
239 timeFormat = TEXT("-%H:%M:%S");
241 } else if(dispTimeStruct.tm_hour <= 0 && yetStartFlag == TRUE){
243 timeFormat = TEXT(" -%M:%S");
245 } else if(dispTimeStruct.tm_hour > 0){
247 timeFormat = TEXT(" %H:%M:%S");
251 timeFormat = TEXT(" %M:%S");
255 _tcsftime(timePtr,ARRAY_LENGTH(timeString) - _tcslen(timeString),timeFormat,&dispTimeStruct);
257 INT_PTR len = _tcslen(timeString);
258 pdc.SelectFont(timeFont);
261 timeStringRect.top = COMMENTWRITEWINDOW_SEPARATEFSIZE.top;
262 timeStringRect.left = COMMENTWRITEWINDOW_SIDESEPARATESIZE;
263 timeStringRect.bottom =timeStringRect.top;
264 timeStringRect.right = timeStringRect.bottom;
265 pdc.DrawTextW(timeString,len,&timeStringRect,DT_CALCRECT);
266 pdc.DrawTextW(timeString,len,&timeStringRect,0);
271 SIZE anonymousStringSize;
273 anonymousButton.GetWindowRect(&anonymousRect);
274 CPoint anonymousPoint(anonymousRect.left,anonymousRect.top);
275 ::ScreenToClient(*this,&anonymousPoint);
276 anonymousRect.right -= anonymousRect.left;
277 anonymousRect.bottom -= anonymousRect.top;
278 anonymousRect.left = anonymousPoint.x;
279 anonymousRect.top = anonymousPoint.y + anonymousRect.bottom;
282 ::GetTextExtentPoint32(pdc,ANONYMOUS_BOTTONSTRING,_tcslen(ANONYMOUS_BOTTONSTRING),&anonymousStringSize);
283 anonymousRect.right = anonymousRect.left + anonymousStringSize.cx;
284 anonymousRect.bottom = anonymousRect.top + anonymousStringSize.cy;
287 pdc.SelectFont(anonymousFont);
289 pdc.DrawText(ANONYMOUS_BOTTONSTRING,_tcslen(ANONYMOUS_BOTTONSTRING),&anonymousRect,0);
294 static VOID EnterChatBox(LPVOID userData){
297 ((CSubChatEdit*)userData)->SetReadOnly(TRUE);
299 ((CSubChatEdit*)userData)->AgreeEnter();
305 BOOL CCommentWriteWindow::SendChat(){
307 _beginthread(EnterChatBox,0,this);
309 CCommentMaker commentMaker;
310 std::vector<TCHAR> chat(commentSubEdit.GetWindowTextLengthW() + 1);
313 commentSubEdit.GetWindowTextW(&chat[0],chat.size());
314 commentMaker.SetChatString(&chat[0]);
315 if(this->anonymousButton.GetCheck() == BST_CHECKED){
317 commentMaker.AddMail(ANONYMOUS_MAILCOMMAND);
319 INT_PTR sizeIndex = commentSizeBox.GetCurSel();
320 if(sizeIndex == CB_ERR)sizeIndex = 0;
321 auto &rCommentSizeInfo = *(CommentSizeInfo*)commentSizeBox.GetItemDataPtr(sizeIndex);
323 if(_tcscmp(rCommentSizeInfo.userData,DEFAULT_COMMENTSIZE) != 0){
325 commentMaker.AddMail(rCommentSizeInfo.userData);
328 INT_PTR posIndex = commentPosBox.GetCurSel();
329 if(posIndex == CB_ERR)posIndex = 0;
330 auto &rCommentPosInfo = *(CommentPosInfo*)commentPosBox.GetItemDataPtr(posIndex);
332 if(_tcscmp(rCommentPosInfo.userData,DEFAULT_COMMENTPOS) != 0){
334 commentMaker.AddMail(rCommentPosInfo.userData);
337 INT_PTR colorIndex = commentColorBox.GetCurSel();
338 if(colorIndex == CB_ERR)colorIndex = 0;
339 auto &rCommentColorInfo = *(CommentColorInfo*)commentColorBox.GetItemDataPtr(colorIndex);
341 if(_tcscmp(rCommentColorInfo.name,DEFAULT_COMMENTCOLOR) != 0){
343 commentMaker.AddMail(rCommentColorInfo.name);
348 NLIB_RESULT code = nicoLiveStream.SendChat(commentMaker);
355 this->commentSubEdit.SetWindowText(TEXT(""));
358 case NLIB_ERR_NOT_LIVECONNECT:
360 ::MessageBox(*this,NLIB_GetErrorMessage(code),TEXT("
\83R
\83\81\83\93\83g
\8f\91\82«
\8d\9e\82Ý
\83G
\83\89\81["),MB_ICONERROR | MB_OK);
361 commentSubEdit.AgreeEnter();
365 UnexpectedErrorMessageShow(TEXT("
\83R
\83\81\83\93\83g
\8f\91\82«
\8d\9e\82Ý
\92\86\82É"),NLIB_GetErrorMessage(code),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
366 commentSubEdit.AgreeEnter();
381 VOID CCommentWriteWindow::OnChatReceveStart(CNicoLiveStream &nicoLiveStream,NicoLiveThreadComment_P threadComment){
383 this->ShowWindow(SW_HIDE);
384 this->commentColorBox.ResetContent();
385 this->commentPosBox.ResetContent();
386 this->commentSizeBox.ResetContent();
388 addItemList(commentColorBox,generalUser::COMMENT_COLORLIST,ARRAY_LENGTH(generalUser::COMMENT_COLORLIST));
389 addItemList(commentSizeBox,generalUser::COMMENT_SIZELIST,ARRAY_LENGTH(generalUser::COMMENT_SIZELIST));
390 addItemList(commentPosBox,generalUser::COMMENT_POSLIST,ARRAY_LENGTH(generalUser::COMMENT_POSLIST));
393 if(nicoLiveStream.IsPremium() == TRUE){
395 addItemList(commentColorBox,premiumUser::COMMENT_COLORLIST,ARRAY_LENGTH(premiumUser::COMMENT_COLORLIST));
396 addItemList(commentSizeBox,premiumUser::COMMENT_SIZELIST,ARRAY_LENGTH(premiumUser::COMMENT_SIZELIST));
397 addItemList(commentPosBox,premiumUser::COMMENT_POSLIST,ARRAY_LENGTH(premiumUser::COMMENT_POSLIST));
400 this->commentColorBox.SetCurSel(0);
401 this->commentPosBox.SetCurSel(0);
402 this->commentSizeBox.SetCurSel(0);
406 this->ShowWindow(SW_SHOW);
407 this->streamTime = threadComment->server_time;
408 this->SetTimer(TIMER_ID,1000,NULL);
415 VOID CCommentWriteWindow::ChangeSize(SIZE &size){
417 SIZE commentAnonymousButtonSize;
418 SIZE commentWriteButtonSize;
419 commentWriteButton.GetIdealSize(&commentWriteButtonSize);
420 anonymousButton.GetIdealSize(&commentAnonymousButtonSize);
422 RECT commentPosBoxRect;
423 RECT commentSizeBoxRect;
424 RECT commentColorBoxRect;
425 RECT anonymousButtonRect;
426 RECT commentEditRect;
427 RECT commentWriteButtonRect;
431 UINT_PTR writeSpaceHeight = COMMENTWRITEWINDOW_SEPARATEFSIZE.top * 2 + commentWriteInternalHeight;
432 this->GetWindowRect(&thisWindowRect);
434 commentPosBoxRect.left = COMMENTWRITEWINDOW_SIDESEPARATESIZE;
435 this->commentPosBoxCS.Lock();
436 commentPosBoxRect.right = commentPosBoxRect.left + CalcComboBoxWidth<CommentPosInfo>(commentPosBox);
437 this->commentPosBoxCS.Unlock();
439 commentSizeBoxRect.left = commentPosBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
440 this->commentSizeBoxCS.Lock();
441 commentSizeBoxRect.right = commentSizeBoxRect.left + CalcComboBoxWidth<CommentSizeInfo>(commentSizeBox);
442 this->commentSizeBoxCS.Unlock();
444 commentColorBoxRect.left = commentSizeBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
445 commentColorBoxRect.right = commentColorBoxRect.left + commentColorBoxSize.cx;
447 CDC cdc(anonymousButton.GetDC());
448 SIZE anonymousStringSize;
449 ::GetTextExtentPoint32(cdc,CHECKBUTTON_HIDDENSTRING,_tcslen(CHECKBUTTON_HIDDENSTRING),&anonymousStringSize);
451 anonymousButtonRect.left = commentColorBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
452 anonymousButtonRect.right = anonymousButtonRect.left + commentAnonymousButtonSize.cx - anonymousStringSize.cx;
454 commentEditRect.left = anonymousButtonRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
456 commentWriteButtonRect.right = size.cx - COMMENTWRITEWINDOW_SIDESEPARATESIZE;
457 commentWriteButtonRect.left = commentWriteButtonRect.right - commentWriteButtonSize.cx;
459 commentEditRect.right = commentWriteButtonRect.left - COMMENTWRITEWINDOW_SIDESEPARATESIZE;
463 //
\88Ú
\93®
\8f\88\97\9d
464 HDWP hDwp = BeginDeferWindowPos(6);
466 commentPosBox.DeferWindowPos(hDwp,*this,
467 commentPosBoxRect.left,writeSpaceHeight,commentPosBoxRect.right - commentPosBoxRect.left,commentWriteInternalHeight,
470 commentSizeBox.DeferWindowPos(hDwp,*this,
471 commentSizeBoxRect.left,writeSpaceHeight,commentSizeBoxRect.right - commentSizeBoxRect.left,commentWriteInternalHeight,
474 commentColorBox.DeferWindowPos(hDwp,*this,
475 commentColorBoxRect.left,writeSpaceHeight,commentColorBoxRect.right - commentColorBoxRect.left,commentWriteInternalHeight,
478 anonymousButton.DeferWindowPos(hDwp,*this,
479 anonymousButtonRect.left,writeSpaceHeight,anonymousButtonRect.right - anonymousButtonRect.left,commentWriteInternalHeight - CHECKBUTTON_SUBSCRIPT_HEIGHT,
482 commentSubEdit.DeferWindowPos(hDwp,*this,
483 commentEditRect.left,writeSpaceHeight,commentEditRect.right - commentEditRect.left,commentWriteInternalHeight,
486 commentWriteButton.DeferWindowPos(hDwp,*this,
487 commentWriteButtonRect.left,writeSpaceHeight,commentWriteButtonRect.right - commentWriteButtonRect.left,commentWriteInternalHeight,
490 EndDeferWindowPos(hDwp);
495 VOID CCommentWriteWindow::OnDrawItem(UINT wParam,LPDRAWITEMSTRUCT lParam){
499 if(lParam->hwndItem == commentColorBox.m_hWnd && commentColorBox.GetCount() > 0){
503 RECT drawRect = lParam->rcItem;
505 INT_PTR curselNo = commentColorBox.GetCurSel();
506 CDCHandle dcHandle = lParam->hDC;
508 const UINT_PTR width = 1;
509 drawRect.left += width;
510 drawRect.top += width;
511 drawRect.right -= width;
512 drawRect.bottom -= width;
514 if(lParam->itemID == ((UINT)-1)){
515 itemNo = curselNo == CB_ERR ? 0 : curselNo;
517 itemNo = lParam->itemID;
520 CommentInfo<COLORREF> &commentColor = *(CommentInfo<COLORREF> *)commentColorBox.GetItemDataPtr(itemNo);
523 if(lParam->itemState & (ODS_FOCUS | ODS_COMBOBOXEDIT)){
527 bkBrush.CreateSolidBrush(PALETTERGB(160,160,160));
531 bkBrush.CreateSolidBrush(PALETTERGB(255,255,255));
541 brush.CreateSolidBrush(commentColor.userData);
542 dcHandle.SelectBrush(brush);
543 dcHandle.FillRect(&lParam->rcItem,bkBrush);
544 dcHandle.SelectBrush(brush);
545 dcHandle.SelectPen((HPEN)::GetStockObject(BLACK_PEN));
546 dcHandle.Rectangle(&drawRect);
553 LRESULT CCommentWriteWindow::OnEraseBkGnd(HDC wParam){
559 LRESULT CCommentWriteWindow::OnButton(UINT hiWparam,INT_PTR loWparam,HWND lParam){
561 if(lParam == commentWriteButton){
570 VOID CCommentWriteWindow::OnTimer(UINT id){
577 VOID CCommentWriteWindow::OnMeasureItem(UINT wParam,LPMEASUREITEMSTRUCT lParam){
579 switch(lParam->CtlID){
581 case COMMENTCOLOR_BOX:
585 pdc.SelectFont(AtlGetDefaultGuiFont());
586 LPCTSTR sample = TEXT(" ");
587 ::GetTextExtentPoint32(pdc,sample,_tcslen(sample),&itemSize);
588 lParam->itemHeight = itemSize.cy;
603 VOID CCommentWriteWindow::OnSendChatResult(){
605 commentSubEdit.AgreeEnter();
611 VOID CCommentWriteWindow::OnHeartBeat(NicoLiveHeartBeat_P heartBeat){
613 if(heartBeat->status == NLIB_ERR_OK){
614 streamTime = heartBeat->time;
621 VOID CCommentWriteWindow::OnDisConnect(){
623 this->KillTimer(TIMER_ID);
630 //CSubChatEdit
\83N
\83\89\83X
631 //////////////////////////////////////////////////////////////////////////////////////
633 void CSubChatEdit::OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam){
634 if(wParam == VK_RETURN){
638 if(untilConnectingFlag == FALSE){
639 untilConnectingFlag = TRUE;
653 VOID CSubChatEdit::AgreeEnter(){
655 this->SetReadOnly(FALSE);
656 untilConnectingFlag = FALSE;