Exemplo n.º 1
0
void CChatRoomDlg::SendChatMsg()
{
	CWinCtrl* pCtrl = FindChildInPane( IID_PANE_BOTTOM, IID_CHAT_EDIT );
	
	if( pCtrl->GetControlType() != CTRL_EDITBOX )
		return;

	CTEditBox* pEditBox = (CTEditBox*)pCtrl;

	if( pEditBox->IsFocus() )
	{
		if( CChatRoom::GetInstance().GetState() == CChatRoom::STATE_ACTIVATED )
		{
			char* pszMsg = pEditBox->get_text();
			if( pszMsg && strlen( pszMsg ) >= 1 )
				g_pNet->Send_cli_CHATROOM_MSG( pszMsg );
		}
		else
		{
			AddChatMsg(pEditBox->get_text(), g_dwWHITE );	
		}
		pEditBox->clear_text();

		///내가 채팅 메세지를 보내면 항상 리스트는 맨밑으로 이동
		CWinCtrl* pCtrl = FindChildInPane( IID_PANE_BOTTOM, IID_CHAT_LIST);
		if( pCtrl )
		{
			if( pCtrl->GetControlType() == CTRL_ZLISTBOX)
			{
				CZListBox* pListBox = (CZListBox*)pCtrl;
				pCtrl = FindChildInPane( IID_PANE_BOTTOM, IID_CHAT_SCROLLBAR );
				if( pCtrl && pCtrl->GetControlType() == CTRL_SCROLLBAR )
				{
					CTScrollBar* pScrollBar = (CTScrollBar*)pCtrl;
					pScrollBar->SetValue( pListBox->GetMaximum() );
				}
			}
			else
			{
				CTListBox* pListBox = (CTListBox*)pCtrl;
				pCtrl = FindChildInPane( IID_PANE_BOTTOM, IID_CHAT_SCROLLBAR );
				if( pCtrl && pCtrl->GetControlType() == CTRL_SCROLLBAR )
				{
					CTScrollBar* pScrollBar = (CTScrollBar*)pCtrl;
					pScrollBar->SetValue( pListBox->GetMaximum() );
				}
			}			
		}
	}
}
Exemplo n.º 2
0
unsigned CChatRoomDlg::Process( unsigned uiMsg, WPARAM wParam, LPARAM lParam )
{
	if( !IsVision())  return 0;

#ifdef __PRIVATECHAT2

	CWinCtrl * pCtrl = NULL;	
	switch(uiMsg)
	{
	case WM_LBUTTONDBLCLK:
		{	
			if( m_iTab == TAB_MEMBER && !m_bMinimize)
			{
				int i=0;
				std::list< CChatMember >::iterator iter;
				for( iter = m_Members.begin(); iter != m_Members.end(); ++iter, i++ )
				{						
					if( pCtrl = Find( CStr::Printf("NAME_%02d", i) ) )
					{
						if( pCtrl->IsInside( lParam ) && strcmp((*iter).GetName(), g_pAVATAR->Get_NAME()) )
						{
							g_itMGR.OpenPrivateChatDlg( (*iter).GetUserTag(), FRIEND_STATUS_NORMAL, (*iter).GetName() );
						}
					}
				}				
			}			
		}
		break;
	case WM_KEYDOWN:
		{
			switch( wParam )
			{

			case VK_TAB:
				{
					CTEditBox* pEditBoxID  = NULL;
					CTEditBox* pEditBoxPwd = NULL;
					pCtrl = Find( IID_EDITBOX_TITLE );
					if( pCtrl && pCtrl->GetControlType() == CTRL_EDITBOX )
						pEditBoxID = (CTEditBox*)pCtrl;

					pCtrl = Find( IID_EDITBOX_PWD );
					if( pCtrl && pCtrl->GetControlType() == CTRL_EDITBOX )
						pEditBoxPwd = ( CTEditBox*) pCtrl;

					if( pEditBoxID && pEditBoxPwd )
					{
						if( pEditBoxID->IsFocus() )
							pEditBoxPwd->SetFocus(true);
						else
							pEditBoxID->SetFocus(true);
					}
					return uiMsg;					
				}
				break;			
			}
		}
	}

#endif //__PRIVATECHAT2

	if( unsigned uiProcID = CTDialog::Process( uiMsg, wParam,lParam ) )
	{
		switch( uiMsg )
		{
#ifdef __PRIVATECHAT2
		case WM_KEYDOWN:
#endif
		case WM_LBUTTONUP:
			OnLButtonUp( uiProcID, wParam, lParam );
			break;
		case WM_LBUTTONDOWN:
			OnLButtonDown( uiProcID, wParam, lParam );
		default:
			break;
		}
		return uiMsg;
	}
	return 0;
}