GetClientRect Win API Call from C#

Hi,

What can I use as "RECT" (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/rectangl_6cqa.asp) in C# when calling an win API

I tried the Rectangle class, but as you'd expect, it threw an access violation.

Here's the api call I'm trying to use:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getclientrect.asp

Here's the code I tried:

        [DllImport("user32.dll")]
        private static extern bool GetClientRect(IntPtr hWnd, Rectangle lpRect);

saltedAsked:
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.

gbzhhuCommented:
You need to use this struct

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/pinvoke.asp

Search for GetClientRect
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
nayernaguibCommented:
If you want to get the client rectangle of a .NET form or control, you can use the ClientRectangle property of the object.

_______________

  Nayer Naguib
0
Mike TomlinsonMiddle School Assistant TeacherCommented:
Be sure to change your API declaration so that it uses the RECT struct posted by gbzhhu instead of Rectangle.  =)

        [DllImport("user32.dll")]
        private static extern bool GetClientRect(IntPtr hWnd, RECT lpRect);
0
AlexFMCommented:
[DllImport("user32.dll")]
private static extern bool GetClientRect(IntPtr hWnd, ref RECT rect);
0
saltedAuthor Commented:
Thanks everyone!

This is all really useful (giving the points on this one is going to be tough :)

I used "out" instead of "ref" - i guess that won't make much difference in this case.

OK, so it turns out this isn't doing what i expected :(

To keep it fair, I'm gonna close this question and start a new one (since you've all answered my question here)

See here for my adapted question:

http://www.experts-exchange.com/Programming/Q_21807300.html

Thanks!
0
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
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.