:^) Okay, unfortunately, the answers to almost all of your questions are, "no one but Microsoft knows for sure". Yes, they use *some* kind of database, but it likely was specifically designed for ENCARTA. How or in what ways? Those are what are known as "trade secrets".
However, *you* can use a general database such as Access to store your information, including relative links to photos (but not the photos themselves). When I say "relative links", I mean that when the user installs your application, you know that all photos will be in a certain directory under your main application folder. So your link would *not* include the entire path (C:\Program Files\MyApplication\Photos\myface.jpg), since you don't really know if the user is going to install on the C: drive or the D: drive. Your link would just be an offset from wherever your application was installed (MyApplication\Photos\myface.jpg).
The interaction between topics is likely also stored in the database. A word in an article may have some sort of data element that is used to find an entry in a link table. The entry is where the actual link information is stored. The actual technique is probably much more sophisticated than this simple explanation, but thats where those "trade secrets" come in once again.
As far as the page layout is concerned, they likely create a certain number of page "templates" with the page attributes predefined. Then, they just "pour" the text and photos onto the page into prearranged areas. Again, I'm guessing, but the template idea only makes sense.
Mathematicians have studied search algorithms for many years, and you'd better believe that Microsoft knows which one(s) are most efficient within their application (but I don't). If you want more information on searching, check out a book on Algorithms (no, I didn't say "Al Gore Rhythms" LOL ) at a university or local library or bookstore, or talk to someone more boring than me.
I'm sorry, I can't comment on the quizzes, since I don't remember what their user interface looks like.
To answer your last question... YES. Visual C++, combined with a database such as Access, can do all of this. If you're trying to make a commercial product, you'll need to make friends with a lot of people who are experts on each of these topics.
Another option you may want to consider which could make your development easier, is to use Visual Basic for the client (user interface) portion. Then, you could create C++ functions (in a DLL library) for the algorithms and database access routines.
I hope these thoughts help you... and that you get very rich and remember me with fondness and generosity. |-0