Well, extension DLLs are far far easier to use BUT you need to link to the .lib file and #include the header files for the class you are linking to in the DLL.
To create an extension DLL you create your new DLL project in VC++ (or whatever) and choose the 'extension DLL' as the type. You then insert whatever classes and resources you need in the DLL. Now... where you have declared a class, you need to stick a little something in there to "export" it: [tt]
class AFX_EXT_CLASS MyDLLClass
{
....
{;[/tt]
Then, compile the DLL and copy it (the actual DLL) and the class header file into another project (such as an application which will be "importing" the class). Final step is to #include the header file wherever it's needed and then to link to the .LIB file produced with the DLL.
To link to the .LIB file (in VC++ at least!) you need to choose 'Project->Settings' menu option. Click on the tab labelled 'Link' and choose the 'General' category in the combo box in the dialog. There should be a text filed (edit box) in there called something like 'Library/Link Modules' (I think!) - you need to add the path to the .LIB file for the DLL file in that edit box.
I guess this sounds kinda complicated but when you do it you'll see just how easy it is! Once you've followed these steps you can use your DLL class just as if the class was declared within your application project. No need to load libraries or anything like that!!
The HINSTANCE is a 'handle' to a particular instance of a program or resource file or whatever (including DLLs).
The best book I've seen with DLL examples so far is "Programming Visual C++" from Microsoft press. The Visual C++ Bible also give good examples but the former is clearer.
programmer (prog'ram'er), n A hot-headed, anorak wearing, pimple-faced computer geek.