@c0mp, you need to return the values as a statement at the end of the function. Right now the values are outputted as the function runs. I believe something like this should do the trick:
<? $the_query = new WP_Query( 'page_id=149' );
$output = "";
while ( $the_query->have_posts() ) :
$the_query->the_post();
$output .= get_the_title();
$output .= get_the_content();
endwhile;
wp_reset_postdata();
return $output;
?>
Now the values are caught by the “output” variable and gets outputted where you place the shortcode.