IS_INTRESOURCE examines the high word of the pointer variable to see if it is 0. I think pointer values usually start at &H10000. So, if the passed pointer value doesn't have any of its high word bits set, then it is assumed to be an integer identifier for a resource.
You've probably overlooked
"Otherwise, it is a pointer to a null-terminated string. If the first character of the string is a pound sign (#), ..."
The lpszName parameter accepts two kinds of input. First, as its prefix implies, it accepts a pointer to a string. That string may either be the name of an image resource or a filename. Second, lpszName also accepts either the image ordinal or an OEM image (both are Integer/Word). MSDN specified that the MAKEINTRESOURCE macro should be used to convert the passed Integer value to the data type of the lpszName argument (which is a pointer). MAKEINTRESOURCE takes an Integer but it does not turn that into a pointer to a string. Rather, it places the Integer in the low word of the pointer value output.
Thus, the best way of declaring the LoadImage API in VB is by using the Unicode version. You'll get the flexibility of accepting either a String or Integer. Also, you won't need the MAKEINTRESOURCE macro anymore, as I've demonstrated in post #2.