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;
11 const static LPCTSTR OWNERMODE_BOTTONSTRING = TEXT("
\8eå
\83R
\83\81");
12 const static LPCTSTR WRITE_BOTTONSTRING = TEXT("
\8f\91\82«
\8d\9e\82Ý");
13 const static LPCTSTR CHECKBUTTON_HIDDENSTRING = TEXT(" ");
16 const static COLORREF OWNEREDITCOLOR = RGB(255,192,192);
17 const static COLORREF NORMALEDITCOLOR = RGB(255,255,255);
18 const static RECT COMMENTWRITEWINDOW_SEPARATEFSIZE = {0,5,0,5};
19 const static UINT_PTR COMMENTWRITEWINDOW_SIDESEPARATESIZE = 5;
20 const static UINT_PTR INIT_COMMENTWRITE_MAXLENGTH = 60;
21 const static UINT_PTR CHECKBUTTON_SUBSCRIPT_HEIGHT = 10;
22 const static LPCTSTR DEFAULT_COMMENTCOLOR = TEXT("white");
23 const static LPCTSTR DEFAULT_COMMENTSIZE = TEXT("medium");
24 const static LPCTSTR DEFAULT_COMMENTPOS = TEXT("naka");
25 const static COLORREF MAX_COLOR = 0xFFFFFF;
29 namespace generalUser{
30 const CommentColorInfo COMMENT_COLORLIST[] = {
31 {DEFAULT_COMMENTCOLOR,PALETTERGB(0xFF,0xFF,0xFF)}, //
\94\92
32 {TEXT("red"),PALETTERGB(0xFF,0x00,0x00)}, //
\90Ô
33 {TEXT("pink"),PALETTERGB(0xFF,0x80,0x80)}, //
\83s
\83\93\83N
34 {TEXT("orange"),PALETTERGB(0xFF,0xC0,0x00)}, //
\83I
\83\8c\83\93\83W
35 {TEXT("yellow"),PALETTERGB(0xFF,0xFF,0x00)}, //
\89©
\90F
36 {TEXT("green"),PALETTERGB(0x00,0xFF,0x00)}, //
\97Î
37 {TEXT("cyan"),PALETTERGB(0x00,0xFF,0xFF)}, //
\8a¦
\90F
38 {TEXT("blue"),PALETTERGB(0x00,0x00,0xFF)}, //
\90Â
39 {TEXT("purple"),PALETTERGB(0xC0,0x00,0xFF)}, //
\8e\87
43 const CommentSizeInfo COMMENT_SIZELIST[] = {
44 {TEXT("
\95\81\92Ê
\81@"),DEFAULT_COMMENTSIZE}, //
\95\81\92Ê
\83T
\83C
\83Y
45 {TEXT("
\8f¬
\81@"),TEXT("small")} //
\8f¬
\83T
\83C
\83Y
49 const CommentPosInfo COMMENT_POSLIST[] = {
50 {TEXT("
\92Ê
\8fí
\81@"),DEFAULT_COMMENTPOS} //
\92Ê
\8fí
\95\
\8e¦
54 namespace premiumUser{
56 const CommentColorInfo COMMENT_COLORLIST[] = {
57 {TEXT("black"),PALETTERGB(0x00,0x00,0x00)}, //
\8d\95
58 {TEXT("white2"),PALETTERGB(0xCC,0xCC,0x99)}, //
\94\92\82»
\82Ì
\82Q
59 {TEXT("red2"),PALETTERGB(0xCC,0x00,0x33)}, //
\90Ô
\82»
\82Ì
\82Q
60 {TEXT("pink2"),PALETTERGB(0xFF,0x33,0xCC)}, //
\83s
\83\93\83N
\82»
\82Ì
\82Q
61 {TEXT("orange2"),PALETTERGB(0xFF,0x66,0x00)}, //
\83I
\83\8c\83\93\83W
\82»
\82Ì
\82Q
62 {TEXT("yellow2"),PALETTERGB(0x99,0x99,0x00)}, //
\89©
\90F
\82»
\82Ì
\82Q
63 {TEXT("green2"),PALETTERGB(0x00,0xCC,0x66)}, //
\97Î
\82»
\82Ì
\82Q
64 {TEXT("cyan2"),PALETTERGB(0x00,0xCC,0xCC)}, //
\8a¦
\90F
\82»
\82Ì
\82Q
65 {TEXT("blue2"),PALETTERGB(0x33,0x99,0xFF)}, //
\90Â
\82»
\82Ì
\82Q
66 {TEXT("purple2"),PALETTERGB(0x66,0x33,0xCC)} //
\8e\87\82»
\82Ì
\82Q
67 // {TEXT("black2"),PALETTERGB(0x66,0x66,0x66)} //
\8d\95\82»
\82Ì
\82Q
\82Í
\82È
\82¢
\81H
70 const CommentSizeInfo COMMENT_SIZELIST[] = {
71 {TEXT("
\91å
\81@"),TEXT("big")} //
\91å
\83T
\83C
\83Y
76 const CommentPosInfo COMMENT_POSLIST[] = {
77 {TEXT("
\89º
\81@"),TEXT("shita")}, //
\89º
\82É
\95\
\8e¦
78 {TEXT("
\8fã
\81@"),TEXT("ue")} //
\8fã
\82É
\95\
\8e¦
87 static VOID addItemList(CComboBox &combo,T * colorList,UINT_PTR length){
89 UINT_PTR startItemcount = combo.GetCount();
90 length+= startItemcount;
91 for(UINT_PTR index = startItemcount; index < length;index++){
93 combo.AddString(colorList[index - startItemcount].name);
94 combo.SetItemDataPtr(index,(LPVOID)&colorList[index - startItemcount]);
104 static UINT_PTR CalcComboBoxWidth(CComboBox &combo){
109 UINT_PTR itemCount = combo.GetCount();
111 for(UINT_PTR index = 0;index < itemCount;index++){
112 name = ((T*)combo.GetItemDataPtr(index))->name;
113 ::GetTextExtentPoint32(pdc,name,_tcslen(name),&size);
114 rslt = rslt < (UINT_PTR)size.cx ? size.cx : rslt;
120 CCommentWriteWindow::CCommentWriteWindow(CNicoLiveStream &in_nicoLiveStream):
121 commentWriteHeight(0),
122 commentWriteInternalHeight(0),
123 commentWriteMaxLength(INIT_COMMENTWRITE_MAXLENGTH),
124 nicoLiveStream(in_nicoLiveStream),
125 commentSubEdit(*this),
130 UINT_PTR CCommentWriteWindow::GetHeight(){
132 return commentWriteHeight + infoDispHeight - COMMENTWRITEWINDOW_SEPARATEFSIZE.top;
136 LRESULT CCommentWriteWindow::OnCreate(LPCREATESTRUCT lpReateStruct){
138 //
\83E
\83B
\83\93\83h
\83E
\8dì
\90¬
\8f\88\97\9d
140 commentPosBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST ,0,COMMENTPOS_BOX);
141 commentSizeBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,0,COMMENTSIZE_BOX);
142 commentColorBox.Create(m_hWnd,0,WC_COMBOBOX,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED ,0,COMMENTCOLOR_BOX);
143 anonymousButton.Create(m_hWnd,0,WC_BUTTON,WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_PUSHLIKE,0,ANONYMOUS_BUTTON);
144 ownerModeButton.Create(m_hWnd,0,WC_BUTTON,WS_CHILD |BS_AUTOCHECKBOX | BS_PUSHLIKE,0,OWNERMODE_BUTTON);
145 commentSubEdit.Create(m_hWnd,0,WC_EDIT,WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,0,COMMENT_EDIT);
146 commentWriteButton.Create(m_hWnd,0,WC_BUTTON,WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,0,COMMENTWRITE_BOTTON);
147 commentPosBox.SetFont(AtlGetDefaultGuiFont());
148 commentSizeBox.SetFont(AtlGetDefaultGuiFont());
149 commentColorBox.SetFont(AtlGetDefaultGuiFont());
152 anonymousButton.SetFont(AtlGetDefaultGuiFont());
153 commentSubEdit.SetFont(AtlGetDefaultGuiFont());
154 commentSubEdit.SetLimitText(commentWriteMaxLength);
155 commentWriteButton.SetWindowTextW(WRITE_BOTTONSTRING);
156 commentWriteButton.SetFont(AtlGetDefaultGuiFont());
157 commentSubEdit.SetWindowTextW(TEXT(""));
159 addItemList(commentColorBox,generalUser::COMMENT_COLORLIST,ARRAY_LENGTH(generalUser::COMMENT_COLORLIST));
160 addItemList(commentSizeBox,generalUser::COMMENT_SIZELIST,ARRAY_LENGTH(generalUser::COMMENT_SIZELIST));
161 addItemList(commentPosBox,generalUser::COMMENT_POSLIST,ARRAY_LENGTH(generalUser::COMMENT_POSLIST));
162 commentColorBox.SetCurSel(0);
163 commentSizeBox.SetCurSel(0);
164 commentPosBox.SetCurSel(0);
166 font = AtlGetDefaultGuiFont();
169 LPCTSTR sample = TEXT(" ");
171 GetTextExtentPoint32(pdc,sample,_tcslen(sample),&thisSize);
172 commentWriteHeight = thisSize.cy + COMMENTWRITEWINDOW_SEPARATEFSIZE.top + COMMENTWRITEWINDOW_SEPARATEFSIZE.bottom;
173 infoDispHeight = commentWriteHeight;
174 commentWriteInternalHeight = commentWriteHeight - (COMMENTWRITEWINDOW_SEPARATEFSIZE.top + COMMENTWRITEWINDOW_SEPARATEFSIZE.bottom);
176 LOGFONT anonymousLogFont = {0};
177 anonymousLogFont.lfHeight = CHECKBUTTON_SUBSCRIPT_HEIGHT;
178 anonymousLogFont.lfCharSet = SHIFTJIS_CHARSET;
180 checkButtonFont.CreateFontIndirect(&anonymousLogFont);
181 anonymousButton.SetFont(checkButtonFont);
182 ownerModeButton.SetFont(checkButtonFont);
183 CFontHandle f = AtlGetDefaultGuiFont();
185 f.GetLogFont(timeLogFont);
187 timeLogFont.lfWeight = FW_BOLD;
189 timeFont.CreateFontIndirectW(&timeLogFont);
190 anonymousButton.SetWindowTextW(ANONYMOUS_MAILCOMMAND);
191 ownerModeButton.SetWindowText(OWNERMODE_BOTTONSTRING);
195 VOID CCommentWriteWindow::OnDestroy(){
196 commentPosBox.DestroyWindow();
197 commentSizeBox.DestroyWindow();
198 commentColorBox.DestroyWindow();
199 anonymousButton.DestroyWindow();
200 commentSubEdit.DestroyWindow();
201 commentWriteButton.DestroyWindow();
207 LRESULT CCommentWriteWindow::OnSize(UINT wParam,SIZE lParam){
211 VOID CCommentWriteWindow::OnPaint(HDC hdc){
215 this->GetClientRect(&clientRect);
217 pdc.FillRect(&clientRect,COLOR_BTNFACE);
222 pdc.SetBkColor(GetSysColor(COLOR_BTNFACE));
227 TCHAR timeString[LENGTH_256];
228 _tcscpy(timeString,TEXT("
\8co
\89ß
\8e\9e\8aÔ:"));
229 LPTSTR timePtr = timeString + _tcslen(timeString);
230 time_t dispTime = static_cast<time_t>(difftime(streamTime,nicoLiveStream.GetStartTime()));
232 BOOL yetStartFlag = FALSE;
235 dispTime = abs(dispTime);
238 tm dispTimeStruct = *gmtime(&dispTime);
240 if(dispTimeStruct.tm_hour > 0 && yetStartFlag == TRUE){
242 timeFormat = TEXT("-%H:%M:%S");
244 } else if(dispTimeStruct.tm_hour <= 0 && yetStartFlag == TRUE){
246 timeFormat = TEXT(" -%M:%S");
248 } else if(dispTimeStruct.tm_hour > 0){
250 timeFormat = TEXT(" %H:%M:%S");
254 timeFormat = TEXT(" %M:%S");
258 _tcsftime(timePtr,ARRAY_LENGTH(timeString) - _tcslen(timeString),timeFormat,&dispTimeStruct);
260 INT_PTR len = _tcslen(timeString);
261 pdc.SelectFont(timeFont);
264 timeStringRect.top = COMMENTWRITEWINDOW_SEPARATEFSIZE.top;
265 timeStringRect.left = COMMENTWRITEWINDOW_SIDESEPARATESIZE;
266 timeStringRect.bottom =timeStringRect.top;
267 timeStringRect.right = timeStringRect.bottom;
268 pdc.DrawTextW(timeString,len,&timeStringRect,DT_CALCRECT);
269 pdc.DrawTextW(timeString,len,&timeStringRect,0);
278 VOID CSubChatEdit::EnterChatBox(LPVOID userData){
280 auto owner = ((CSubChatEdit*)userData)->self;
281 auto &self = *((CSubChatEdit*)userData);
282 CCommentMaker commentMaker;
283 std::vector<TCHAR> chat(owner.commentSubEdit.GetWindowTextLengthW() + 1);
286 owner.commentSubEdit.GetWindowTextW(&chat[0],chat.size());
287 commentMaker.SetChatString(&chat[0]);
288 if(owner.anonymousButton.GetCheck() == BST_CHECKED){
290 commentMaker.AddMail(ANONYMOUS_MAILCOMMAND);
292 INT_PTR sizeIndex = owner.commentSizeBox.GetCurSel();
293 if(sizeIndex == CB_ERR)sizeIndex = 0;
294 auto &rCommentSizeInfo = *(CommentSizeInfo*)owner.commentSizeBox.GetItemDataPtr(sizeIndex);
296 if(_tcscmp(rCommentSizeInfo.userData,DEFAULT_COMMENTSIZE) != 0){
298 commentMaker.AddMail(rCommentSizeInfo.userData);
301 INT_PTR posIndex = owner.commentPosBox.GetCurSel();
302 if(posIndex == CB_ERR)posIndex = 0;
303 auto &rCommentPosInfo = *(CommentPosInfo*)owner.commentPosBox.GetItemDataPtr(posIndex);
305 if(_tcscmp(rCommentPosInfo.userData,DEFAULT_COMMENTPOS) != 0){
307 commentMaker.AddMail(rCommentPosInfo.userData);
310 INT_PTR colorIndex = owner.commentColorBox.GetCurSel();
311 if(colorIndex == CB_ERR)colorIndex = 0;
312 auto &rCommentColorInfo = *(CommentColorInfo*)owner.commentColorBox.GetItemDataPtr(colorIndex);
314 if(_tcscmp(rCommentColorInfo.name,DEFAULT_COMMENTCOLOR) != 0){
316 commentMaker.AddMail(rCommentColorInfo.name);
320 NLIB_RESULT code = NLIB_ERR_CODE_NOTSET;
322 if(owner.nicoLiveStream.IsOwner() ==TRUE && owner.ownerModeButton.GetCheck() == BST_CHECKED){
324 code = owner.nicoLiveStream.SendOwnerChat(commentMaker);
328 code = owner.nicoLiveStream.SendChat(commentMaker);
337 owner.commentSubEdit.SetWindowText(TEXT(""));
340 case NLIB_ERR_NOT_LIVECONNECT:
341 case NLIB_FAILED_CONNECT:
342 ::MessageBox(owner,NLIB_GetErrorMessage(code),TEXT("
\83R
\83\81\83\93\83g
\8f\91\82«
\8d\9e\82Ý
\83G
\83\89\81["),MB_ICONERROR | MB_OK);
343 owner.commentSubEdit.AgreeEnter();
351 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__));
352 owner.commentSubEdit.AgreeEnter();
362 if((owner.nicoLiveStream.IsOwner())){
369 ((CSubChatEdit*)userData)->AgreeEnter();
375 BOOL CCommentWriteWindow::SendChat(){
377 this->commentSubEdit.SetReadOnly(TRUE);
378 _beginthread(CSubChatEdit::EnterChatBox,0,&this->commentSubEdit);
390 BOOL CCommentWriteWindow::SetText(LPCTSTR lpStr){
392 BOOL rslt = this->commentSubEdit.SetWindowText(lpStr);
394 commentSubEdit.SetFocus();
395 int cursor = commentSubEdit.GetWindowTextLength();
396 commentSubEdit.SetSel(cursor,cursor);
397 //commentSubEdit.ShowCaret();
402 VOID CCommentWriteWindow::OnChatReceveStart(CNicoLiveStream &nicoLiveStream,NicoLiveThreadComment_P threadComment){
404 this->ShowWindow(SW_HIDE);
405 this->commentColorBox.ResetContent();
406 this->commentPosBox.ResetContent();
407 this->commentSizeBox.ResetContent();
409 addItemList(commentColorBox,generalUser::COMMENT_COLORLIST,ARRAY_LENGTH(generalUser::COMMENT_COLORLIST));
410 addItemList(commentSizeBox,generalUser::COMMENT_SIZELIST,ARRAY_LENGTH(generalUser::COMMENT_SIZELIST));
411 addItemList(commentPosBox,generalUser::COMMENT_POSLIST,ARRAY_LENGTH(generalUser::COMMENT_POSLIST));
414 if(nicoLiveStream.IsPremium() == TRUE){
416 addItemList(commentColorBox,premiumUser::COMMENT_COLORLIST,ARRAY_LENGTH(premiumUser::COMMENT_COLORLIST));
417 addItemList(commentSizeBox,premiumUser::COMMENT_SIZELIST,ARRAY_LENGTH(premiumUser::COMMENT_SIZELIST));
418 addItemList(commentPosBox,premiumUser::COMMENT_POSLIST,ARRAY_LENGTH(premiumUser::COMMENT_POSLIST));
421 this->commentColorBox.SetCurSel(0);
422 this->commentPosBox.SetCurSel(0);
423 this->commentSizeBox.SetCurSel(0);
427 this->ShowWindow(SW_SHOW);
428 this->streamTime = threadComment->server_time;
429 this->SetTimer(TIMER_ID,1000,NULL);
430 if(nicoLiveStream.IsOwner() == TRUE){
432 this->ownerModeButton.ShowWindow(SW_SHOW);
433 ownerModeButton.SetCheck(BST_CHECKED);
434 editBkColor = OWNEREDITCOLOR;
438 this->ownerModeButton.ShowWindow(SW_HIDE);
439 editBkColor = NORMALEDITCOLOR;
443 if(this->editBkBrush.IsNull() ==FALSE){
444 editBkBrush.DeleteObject();
447 editBkBrush.CreateSolidBrush(editBkColor);
450 this->GetClientRect(&windowRect);
451 size.cx = windowRect.right - windowRect.left;
452 size.cy = windowRect.bottom - windowRect.top;
458 VOID CCommentWriteWindow::ChangeSize(SIZE &size){
460 SIZE commentAnonymousButtonSize;
461 SIZE commentWriteButtonSize;
462 commentWriteButton.GetIdealSize(&commentWriteButtonSize);
463 anonymousButton.GetIdealSize(&commentAnonymousButtonSize);
464 UINT_PTR defwindowCount = 0;
465 RECT commentPosBoxRect;
466 RECT commentSizeBoxRect;
467 RECT commentColorBoxRect;
468 RECT anonymousButtonRect;
469 RECT commentEditRect;
470 RECT commentWriteButtonRect;
471 RECT ownerModeButtonRect;
474 UINT_PTR writeSpaceHeight = COMMENTWRITEWINDOW_SEPARATEFSIZE.top * 2 + commentWriteInternalHeight;
475 this->GetWindowRect(&thisWindowRect);
477 commentPosBoxRect.left = COMMENTWRITEWINDOW_SIDESEPARATESIZE;
478 this->commentPosBoxCS.Lock();
479 commentPosBoxRect.right = commentPosBoxRect.left + CalcComboBoxWidth<CommentPosInfo>(commentPosBox);
480 this->commentPosBoxCS.Unlock();
482 commentSizeBoxRect.left = commentPosBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
483 this->commentSizeBoxCS.Lock();
484 commentSizeBoxRect.right = commentSizeBoxRect.left + CalcComboBoxWidth<CommentSizeInfo>(commentSizeBox);
485 this->commentSizeBoxCS.Unlock();
487 commentColorBoxRect.left = commentSizeBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
488 commentColorBoxRect.right = commentColorBoxRect.left + commentColorBoxSize.cx;
492 anonymousButtonRect.left = commentColorBoxRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
493 anonymousButtonRect.right = anonymousButtonRect.left + commentAnonymousButtonSize.cx;
495 if(ownerModeButton.IsWindowVisible() == TRUE){
498 SIZE ownerModeButtonSize;
499 ownerModeButton.GetIdealSize(&ownerModeButtonSize);
500 ownerModeButtonRect.left = anonymousButtonRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
501 ownerModeButtonRect.right = ownerModeButtonRect.left + ownerModeButtonSize.cx;
502 commentEditRect.left = ownerModeButtonRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
506 commentEditRect.left = anonymousButtonRect.right + COMMENTWRITEWINDOW_SIDESEPARATESIZE;
510 commentWriteButtonRect.right = size.cx - COMMENTWRITEWINDOW_SIDESEPARATESIZE;
511 commentWriteButtonRect.left = commentWriteButtonRect.right - commentWriteButtonSize.cx;
513 commentEditRect.right = commentWriteButtonRect.left - COMMENTWRITEWINDOW_SIDESEPARATESIZE;
517 //
\88Ú
\93®
\8f\88\97\9d
518 HDWP hDwp = BeginDeferWindowPos(defwindowCount);
520 commentPosBox.DeferWindowPos(hDwp,*this,
521 commentPosBoxRect.left,writeSpaceHeight,commentPosBoxRect.right - commentPosBoxRect.left,commentWriteInternalHeight,
524 commentSizeBox.DeferWindowPos(hDwp,*this,
525 commentSizeBoxRect.left,writeSpaceHeight,commentSizeBoxRect.right - commentSizeBoxRect.left,commentWriteInternalHeight,
528 commentColorBox.DeferWindowPos(hDwp,*this,
529 commentColorBoxRect.left,writeSpaceHeight,commentColorBoxRect.right - commentColorBoxRect.left,commentWriteInternalHeight,
532 anonymousButton.DeferWindowPos(hDwp,*this,
533 anonymousButtonRect.left,writeSpaceHeight,anonymousButtonRect.right - anonymousButtonRect.left,commentWriteInternalHeight,
536 if(ownerModeButton.IsWindowVisible() == TRUE){
537 ownerModeButton.DeferWindowPos(hDwp,*this,
538 ownerModeButtonRect.left,writeSpaceHeight,ownerModeButtonRect.right - ownerModeButtonRect.left,commentWriteInternalHeight,
542 commentSubEdit.DeferWindowPos(hDwp,*this,
543 commentEditRect.left,writeSpaceHeight,commentEditRect.right - commentEditRect.left,commentWriteInternalHeight,
546 commentWriteButton.DeferWindowPos(hDwp,*this,
547 commentWriteButtonRect.left,writeSpaceHeight,commentWriteButtonRect.right - commentWriteButtonRect.left,commentWriteInternalHeight,
550 EndDeferWindowPos(hDwp);
555 VOID CCommentWriteWindow::OnDrawItem(UINT wParam,LPDRAWITEMSTRUCT lParam){
559 if(lParam->hwndItem == commentColorBox.m_hWnd && commentColorBox.GetCount() > 0){
563 RECT drawRect = lParam->rcItem;
565 INT_PTR curselNo = commentColorBox.GetCurSel();
566 CDCHandle dcHandle = lParam->hDC;
568 const UINT_PTR width = 1;
569 drawRect.left += width;
570 drawRect.top += width;
571 drawRect.right -= width;
572 drawRect.bottom -= width;
574 if(lParam->itemID == ((UINT)-1)){
575 itemNo = curselNo == CB_ERR ? 0 : curselNo;
577 itemNo = lParam->itemID;
580 CommentInfo<COLORREF> &commentColor = *(CommentInfo<COLORREF> *)commentColorBox.GetItemDataPtr(itemNo);
583 if(lParam->itemState & (ODS_FOCUS | ODS_COMBOBOXEDIT)){
587 bkBrush.CreateSolidBrush(PALETTERGB(160,160,160));
591 bkBrush.CreateSolidBrush(PALETTERGB(255,255,255));
601 brush.CreateSolidBrush(commentColor.userData);
602 dcHandle.SelectBrush(brush);
603 dcHandle.FillRect(&lParam->rcItem,bkBrush);
604 dcHandle.SelectBrush(brush);
605 dcHandle.SelectPen((HPEN)::GetStockObject(BLACK_PEN));
606 dcHandle.Rectangle(&drawRect);
613 LRESULT CCommentWriteWindow::OnEraseBkGnd(HDC wParam){
619 LRESULT CCommentWriteWindow::OnCtlolorEdit(HDC hdc,HWND hWnd){
621 if(hWnd == this->commentSubEdit){
624 SetBkMode(hdc, TRANSPARENT); //
\94w
\8ci
\82ð
\93§
\89ß
625 SetBkColor(hdc,this->editBkColor); //
\83e
\83L
\83X
\83g
\82ª
\8f\91\82©
\82ê
\82Ä
\82¢
\82é
\95\94\95ª
\82Ì
\83e
\83L
\83X
\83g
\82Ì
\94w
\8ci
\82Ì
\90F
627 return (LRESULT)editBkBrush.m_hBrush;
633 LRESULT CCommentWriteWindow::OnButton(UINT hiWparam,INT_PTR loWparam,HWND lParam){
635 if(lParam == commentWriteButton){
639 } else if(lParam == this->ownerModeButton){
641 if(this->ownerModeButton.GetCheck() == BST_CHECKED){
643 this->editBkColor = OWNEREDITCOLOR;
647 this->editBkColor = NORMALEDITCOLOR;
650 if(this->editBkBrush.IsNull() == FALSE){
652 this->editBkBrush.DeleteObject();
656 this->editBkBrush.CreateSolidBrush(editBkColor);
657 commentSubEdit.Invalidate();
664 VOID CCommentWriteWindow::OnTimer(UINT id){
671 VOID CCommentWriteWindow::OnMeasureItem(UINT wParam,LPMEASUREITEMSTRUCT lParam){
673 switch(lParam->CtlID){
675 case COMMENTCOLOR_BOX:
679 pdc.SelectFont(AtlGetDefaultGuiFont());
680 LPCTSTR sample = TEXT(" ");
681 ::GetTextExtentPoint32(pdc,sample,_tcslen(sample),&itemSize);
682 lParam->itemHeight = itemSize.cy;
697 VOID CCommentWriteWindow::OnSendChatResult(){
699 commentSubEdit.AgreeEnter();
705 VOID CCommentWriteWindow::OnHeartBeat(NicoLiveHeartBeat_P heartBeat){
707 if(heartBeat->status == NLIB_ERR_OK){
708 streamTime = heartBeat->time;
715 VOID CCommentWriteWindow::OnDisConnect(){
717 this->KillTimer(TIMER_ID);
724 //CSubChatEdit
\83N
\83\89\83X
725 //////////////////////////////////////////////////////////////////////////////////////
727 void CSubChatEdit::OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam){
728 if(wParam == VK_RETURN){
732 if(untilConnectingFlag == FALSE){
733 untilConnectingFlag = TRUE;
747 VOID CSubChatEdit::AgreeEnter(){
749 this->SetReadOnly(FALSE);
750 untilConnectingFlag = FALSE;