I only get this problem with this compiler ( MSVC++ 6.0 ).
Here is the code in question
Display is an unsigned char array. I get this error
if ( Display [ x + ( y * max_width ) ] != 0 )
error C2108: subscript is not of integral type
MSVC doesn't like the stuff that is inside the  for some reason..
I think [ x + ( y * max_width ) ] should resolve to an unsigned integer....
Try adding a cout << x + ( y * max_width ) and see what ye' get
std::cout << x + ( y * max_width );
that worked fine.
x, y, and max_width are floats. BUT I tried changing them to different types and it gives me the same error.
AH, I tried changing them to int again and it worked.
Lemme see if I can resolve the problem.
hmmm... a floating point array subscript may be your problem.. a simple cast to integer should fix the problem...
give this a try...
display[(int)x +(int) ( y * max_width )]
I changed all of the variables involved to ints. I figured it would be faster that converting all the time.
Thanks for your help!