Framework implies that your applications sits inside the framework, while a library provides functionality to be used (not re-used!). In the former, you're not in control, in the latter. you can pick and choose and remain in control.

Callbacks are also used in library code (and are useful) but it is on a much smaller scale than in a framework.

Having read the above, I suspect the word "framework" is a little overloaded and is covering several different definitions. To clarify, I'd be very interested to know how many people would agree/disagree with the following statement:

You may have many libraries per application, but you'd generally only have one framework.

Software Framework: Is a re-usable design for a software system (or subsystem). A software framework may include programs, code libraries, a scripting language, other software to help develop and glue together the different components of a software project. Various parts of the framework maybe exposed through an API.

API (Application Programming Interface): Is a set of routines( AKA methods, functions), data structures, object classes, and/or protocols provided by libraries and/or operating system services in order to support the building of applications.