With a CMS, all the programming code is already written, and the user just inputs data for the site (pages, blog posts, whatever -- see Wordpress, for example); unless, of course, you want to modify the underlying source code or create a custom plug-in for it.
With a framework, you actually write the code to implement the web site (or whatever it is you are building), but you start with some ready-made code that defines the general structure of the software (not the site's structure, mind you) and which usually provides many functions/methods for handling typical coding tasks. The idea then is that the developer spends a larger percentage of his/her time on the actual "business" code and less on the detailed nuts and bolts (i.e. "framework") upon which that business logic is implemented. Check out the CodeIgniter tutorials to get a feel for what this means.
If a particular CMS provides a large majority of the functionality as well as look and feel that you need, then it is probably a good solution for you (with a possible caveat being how efficient its code is and how scalable, should your site's traffic and growth require it). But if you would need to make a lot of modifications to a CMS to get it to work the way you want, you might actually be able to develop the site more efficiently on top of a framework, so that you don't spend lots of time trying to figure out what to change and how to change it in a bunch of CMS code you did not write -- also dependent on how well you know the framework you would work with instead, of course.