Have you ever noticed how every other time you need a win32 api, its telling you it needs an hinstance!? Thats crazy! You don't have to just be rebellious to want to refuse. Its only human. Did you know that most of the time you can just give it a 0 instead of an hinstance? Yeah! Screw that! So I'll give you a list of functions that demand an hinstance and tell you if you can just toss them a 0! And if you have to give it an hinstance sometimes i'll tell you when! Lets go!

Oh by the way i run win2k so what i tell you to do may break win9x. But who cares! Well. if you do care, then maybe you should think twice about using this information. Oh well. onward!

I vaguely remember that in some cases using an hinstance where one is unecessary will speed up the function call a little bit. But maybe it wont.

This list is by no means complete and is as a matter of fact under development right now

apiRequired?comments
CreateDialog() NO
CreateWindow() NO
CreateWindowEx() NO
DialogBox() NO
GetOpenFileName() RARELY see note#2
LoadCursor() MAYBE see note#1
LoadIcon() MAYBE see note#1

NOTE#1
The resource loading routines all behave similarly. If you're loading a custom resource thats stored in your program's .exe you'll have to give windows the hinstance. HOWEVER, if you're loading a standard system resource the hinstance MUST be NULL. I think MSDN says this but it should be in bold up top.
LoadIcon
LoadCursor

NOTE#2
The common dialog routines all take a little structure that tells them how to work. The structures all have an hinstance member in them. You dont need this unless you're going to override the dialog template windows uses. And maybe not even then. Ive never tested it.
GetOpenFileName() / OPENFILENAME