void CEquationEditorWindow::OnWmCommand( WPARAM wParam, LPARAM lParam )
{
	CCaret caret;
	if( HIWORD( wParam ) == 1 ) {
		switch( LOWORD( wParam ) ) {
			case ID_ACC_SQRBRAC:
				presenter->AddControlView( SQUAREBRACKETS );
				break;
			case ID_ACC_BRAC:
				presenter->AddControlView( BRACES );
				break;
			case ID_ACC_PAR:
				presenter->AddControlView( PARENTHESES );
				break;
			case ID_ACC_DEGR:
				presenter->AddControlView( DEGR );
				break;
			case ID_ACC_FRAC:
				presenter->AddControlView( FRAC );
				break;
			case ID_SHIFT_LEFT:
				caret = presenter->GetCaret();
				caret.GetCurEdit()->MoveCaretLeft( caret.GetCurEdit().get(), caret );
				presenter->SetSelection( caret.GetPointX(), caret.GetPointY() );
				break;
			case ID_SHIFT_RIGHT:
				caret = presenter->GetCaret();
				caret.GetCurEdit()->MoveCaretRight( caret.GetCurEdit().get(), caret );
				presenter->SetSelection( caret.GetPointX(), caret.GetPointY() );
				break;
			default:
				return;
		}
	} else if( HIWORD( wParam ) == 0 ) {
		switch( LOWORD( wParam ) ) {
			case ID_ADD_FRAC:
				presenter->AddControlView( FRAC );
				break;
			case ID_ADD_DEGR:
				presenter->AddControlView( DEGR );
				break;
			case ID_ADD_SUBSCRIPT:
				presenter->AddControlView( SUBSCRIPT );
				break;
			case ID_ADD_RADICAL:
				presenter->AddControlView( RADICAL );
				break;
			case ID_ADD_PARANTHESES:
				presenter->AddControlView( PARENTHESES );
				break;
			case ID_ADD_BRACES:
				presenter->AddControlView( BRACES );
				break;
			case ID_ADD_SQUAREBRACKETS:
				presenter->AddControlView( SQUAREBRACKETS );
				break;
			case ID_ADD_SUM:
				presenter->AddControlView( SUM );
				break;
			case ID_ADD_PRODUCT:
				presenter->AddControlView( PRODUCT );
				break;
			case ID_ADD_SYSTEM:
				presenter->AddControlView( SYSTEM );
				break;
		case ID_ADD_SAVE:
			presenter->Serialize();
			break;
		}
	}
}
void CEquationEditorWindow::OnWmCommand( WPARAM wParam, LPARAM lParam )
{
	CCaret caret;
	if( HIWORD( wParam ) == 1 ) {
		switch( LOWORD( wParam ) ) {
			case ID_ACC_SQRBRAC:
				presenter->AddControlView( SQUAREBRACKETS );
				break;
			case ID_ACC_BRAC:
				presenter->AddControlView( BRACES );
				break;
			case ID_ACC_PAR:
				presenter->AddControlView( PARENTHESES );
				break;
			case ID_ACC_DEGR:
				presenter->AddControlView( DEGR );
				break;
			case ID_ACC_FRAC:
				presenter->AddControlView( FRAC );
				break;
			case ID_SHIFT_LEFT:
				caret = presenter->GetCaret();
				caret.GetCurEdit()->MoveCaretLeft( caret.GetCurEdit().get(), caret );
				presenter->SetSelection( caret.GetPointX(), caret.GetPointY() );
				break;
			case ID_SHIFT_RIGHT:
				caret = presenter->GetCaret();
				caret.GetCurEdit()->MoveCaretRight( caret.GetCurEdit().get(), caret );
				presenter->SetSelection( caret.GetPointX(), caret.GetPointY() );
				break;
			default:
				return;
		}
	} else if( HIWORD( wParam ) == 0 ) {
		switch( LOWORD( wParam ) ) {
			case ID_ADD_FRAC:
				presenter->AddControlView( FRAC );
				break;
			case ID_ADD_DEGR:
				presenter->AddControlView( DEGR );
				break;
			case ID_ADD_SUBSCRIPT:
				presenter->AddControlView( SUBSCRIPT );
				break;
			case ID_ADD_RADICAL:
				presenter->AddControlView( RADICAL );
				break;
			case ID_ADD_PARANTHESES:
				presenter->AddControlView( PARENTHESES );
				break;
			case ID_ADD_BRACES:
				presenter->AddControlView( BRACES );
				break;
			case ID_ADD_SQUAREBRACKETS:
				presenter->AddControlView( SQUAREBRACKETS );
				break;
			case ID_ADD_SUM:
				presenter->AddControlView( SUM );
				break;
			case ID_ADD_PRODUCT:
				presenter->AddControlView( PRODUCT );
				break;
            case ID_ZOOM_IN:
                Zoom( true );
                break;
            case ID_ZOOM_OUT:
                Zoom( false );
                break;
			case ID_ADD_SYSTEM:
				presenter->AddControlView( SYSTEM );
				break;
			case ID_ADD_Validator:
				CEquationEditorWindow::ValidateFormula();
				break;
            case ID_DRAW_GRAPH:
                DrawGraph();
                break;
		    case ID_ADD_SAVE:
			    SaveToFile();
			    break;
		}
        OnZoom();
	}
}