void CWhiteBoardServerDlg::OnEllipse()
{
	ResetTools();
	m_emTool = ELLIPSE;
	m_btnEllipse.EnableWindow( FALSE );
	m_staticCanvas.SetTool( m_emTool );
}
void TOOL_MANAGER::InitTools()
{
    for( auto it = m_toolState.begin(); it != m_toolState.end(); /* iteration in the loop */ )
    {
        TOOL_BASE* tool = it->first;
        TOOL_STATE* state = it->second;
        setActiveState( state );
        ++it;   // keep the iterator valid if the element is going to be erased

        if( !tool->Init() )
        {
            wxMessageBox(
                    wxString::Format( "Initialization of tool \"%s\" failed", tool->GetName() ) );

            // Unregister the tool
            setActiveState( nullptr );
            m_toolState.erase( tool );
            m_toolNameIndex.erase( tool->GetName() );
            m_toolIdIndex.erase( tool->GetId() );
            m_toolTypes.erase( typeid( *tool ).name() );

            delete state;
            delete tool;
        }
    }

    ResetTools( TOOL_BASE::RUN );
}
void CWhiteBoardServerDlg::OnRectangleEmpty() 
{
	ResetTools();
	m_emTool = RECTANGLE_EMPTY;
	m_btnRectangelEmpty.EnableWindow( FALSE );
	m_staticCanvas.SetTool( m_emTool );
}
void CWhiteBoardServerDlg::OnLine() 
{
	ResetTools();
	m_emTool = LINE;
	m_btnLine.EnableWindow( FALSE );
	m_staticCanvas.SetTool( m_emTool );
}
void CWhiteBoardServerDlg::OnPencil() 
{
	ResetTools();
	m_emTool = PENCIL;
	m_btnPencil.EnableWindow( FALSE );
	m_staticCanvas.SetTool( m_emTool );
}
void CWhiteBoardServerDlg::OnEraser() 
{
	ResetTools();
	m_emTool = ERASER;
	m_btnEraser.EnableWindow( FALSE );
	m_staticCanvas.SetTool( m_emTool );
}
void CWhiteBoardServerDlg::OnCancel() 
{
	if( IDOK == MessageBox( "要关闭白板吗?", "关闭", MB_OKCANCEL | MB_ICONINFORMATION | MB_DEFBUTTON2 ) )
	{
		/// 向所有客户端发送关闭服务器消息
		for( int nIndex = 0; nIndex < m_listCtrlInWhiteBoard.GetItemCount(); nIndex++ )
		{
			USER user = m_arrFriendsInWhiteBoard.GetAt( nIndex );
			SendUserCommandToIP( WHITEBOARD_SERVER_CLOSED, user.strIP, WHITEBOARD_CLIENT_PORT, NULL );
		}
		
		/// 关闭UDP套接字
		m_pWBSSocket->Close();
		delete [] m_pWBSSocket;
		m_pWBSSocket = NULL;
		
		/// 清空用户列表
		m_arrFriendsInWhiteBoard.RemoveAll();
		m_arrFriendsOutOfWhiteBoard.RemoveAll();
		
		/// 设置默认
		ResetTools();
		ResetWidth();
		m_emTool		= PENCIL;
		m_nWidth		= WHITEBOARD_WIDTH_1;
		m_clDrawColor	= DEFAULT_WHITEBOARD_TOOL_COLOR;


		/// 清除画布
		m_staticCanvas.ClearCanvas();
		DestroyWindow();
	}
}