A problem using the SelectObject function

Started by
4 comments, last by Steve-B 20 years, 8 months ago
I keep getting this damn error in Visual C++ when I try to use the Select Object function. Here is the error:

error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
        Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Here is the code. The first SelectObject function is the line with the error:
   
case WM_PAINT:
			{
				PAINTSTRUCT ps;
				HBRUSH hOldBrush;

				// Start Painting

				BeginPaint(hWnd, &ps);

				// Select and use the red brush

				hOldBrush = SelectObject(ps.hdc, hRedBrush);

				// Draw a rectangle filled with the currently selected brush

				Rectangle(ps.hdc, 100, 100, 150, 150);

				// Deselect the brush

				SelectObject(ps.hdc, hOldBrush);

				// End painting

				EndPaint(hWnd, &ps);
			}
			break;
Anyone got any ideas? [edited by - Steve-B on August 11, 2003 6:10:56 PM]
Advertisement
Try

hOldBrush = SelectObject(ps.hdc, (HBRUSH)hRedBrush);

C++ is stricter than C and requires explicit type casts from void pointers.

[edited by - CodeMunkie on August 11, 2003 6:12:03 PM]
"When you die, if you get a choice between going to regular heaven or pie heaven, choose pie heaven. It might be a trick, but if it's not, mmmmmmm, boy."
How to Ask Questions the Smart Way.
Hi CodeMunkie. That was the first thing I tried when I got the error. Unfortunately I still get the same error.
it''s probably not the parm but the return value assignment that''s causing the error. change hOldBrush to a HGDIOBJ and the error should go away.
AP is correct. You could also just cast the return type instead of changing hOldBrush''s type:

hOldBrush = (HBRUSH)SelectObject(ps.hdc, (HBRUSH)hRedBrush);
"When you die, if you get a choice between going to regular heaven or pie heaven, choose pie heaven. It might be a trick, but if it's not, mmmmmmm, boy."
How to Ask Questions the Smart Way.
Absolutely correct.

I changed the code to "HGDIOBJ hOldBrush;" and it works like a charm.

Thanks a lot!

This topic is closed to new replies.

Advertisement