C# RegisterClassEx/WNDCLASSEX problem

Hello all,

I am having trouble registering a new window class in C# using RegisterClassEx.  My application already heavily uses the WinAPI via pInvoke (i.e. DllImport statements) for other functions, and that part isn't the problem, I don't think (but am open to the possibility.)

Basically, when I call CreateWindowEx, it fails with error 1407, which basically says that my class name is undefined (which I agree with.)  I simply can't seem to figure out the WNDCLASSEX structure and how to use it in C#.  Could anyone please post and/or send me C# sample code that will successfully register a new window class (named, for example's sake "sample_window") that will allow a call to CreateWindowEx similar to the following to succeed??

            IntPtr myNewSampleWindowHWND = CreateWindowEx(WS_EX_TOPMOST, "sample_window", "", WS_VISIBLE, 0, 0, 500, 500, this.Handle, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);

My goal is to create a blank (in the sense of WinAPI programming) topmost window that I can get a Graphics object from and draw a rectangle on.  Other than what I specifically draw, I would like the window to be completely "blank" (A.K.A  no menu or title bar, etc.)  I only want what I draw to be displayed.  Ultimately, the app should be able to destroy the window using something like:

DestroyWindow(myNewSampleWindowHWND)

Does that make sense?  I know how to do this in VC++, but am trying to stick to C# for code-management purposes.  I have tried and tried to no avail to get this to work in C#, and I could really use some help.

Thanks so much!!!
Kendell
(points awarded to all on-subject responders)
kwelch007Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

kwelch007Author Commented:
It turns out that, for my purposes at least, I was able to create a topmost/"transparent" window using the VS2008 wizard.  I created a Form, set its FormBorderStyle to "none", set its TopMost property to "true", and set both its BackColor and TransparencyKey values to the same color.  It then became useable for my purposes.

It seems to me that nobody on the web has published any working code using API calls to RegisterClassEx and CreateWindowEx (including the WNDCLASSEX structure.)  I can still think of a lot of reasons that someone might need to use RegisterClassEx and CreateWindowEx directly from C#, and I hope this thread continues.

I would also note that the .NET "NativeWindow()" function might be useful, but I had trouble with the MSDN sample code conflicting with another class I was using, and came across my solution before pursuing the problem.

Thanks anyway!
Kendell
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.