RECT - Rectangle

  • Thread starter Thread starter Mythran
  • Start date Start date
M

Mythran

I have a question regarding the RECT structure required for PInvoke calls.
I was reviewing the Rectangle structure (System.Drawing.Rectangle) and it
occurred to me that I may be able to use this structure in place of defining
a RECT structure. I would create the RECT structure definition the same as
the Rectangle structure is defined. Is there any problems with using
Rectangle in place of RECT for the API functions?

Thanks,
Mythran
 
Mythran,

Yes, you can use the System.Drawing.Rectangle structure in place of the
RECT structure in interop calls. The structure layout is the same.

Hope this helps.
 
Nicholas,

Are you sure about this? It seems at first glance that the Rectangle class
uses left, top, *width*, *height* while RECT uses left, top, *right*,
*bottom*. Also, I think I remember seeing strange behavior when I tried
using the Rectangle class (changing to RECT fixed the problem.)

--
Colin Neller
http://www.colinneller.com/blog


Nicholas Paldino said:
Mythran,

Yes, you can use the System.Drawing.Rectangle structure in place of the
RECT structure in interop calls. The structure layout is the same.

Hope this helps.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Mythran said:
I have a question regarding the RECT structure required for PInvoke calls.
I was reviewing the Rectangle structure (System.Drawing.Rectangle) and it
occurred to me that I may be able to use this structure in place of
defining a RECT structure. I would create the RECT structure definition
the same as the Rectangle structure is defined. Is there any problems
with using Rectangle in place of RECT for the API functions?

Thanks,
Mythran
 
Colin,

Yes, I am. The fields internally are laid out in the same way that the
RECT structure does. The property that you see, Right, is returned on the
fly, and there is not a backing store for it in the class.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Colin Neller said:
Nicholas,

Are you sure about this? It seems at first glance that the Rectangle
class uses left, top, *width*, *height* while RECT uses left, top,
*right*, *bottom*. Also, I think I remember seeing strange behavior when
I tried using the Rectangle class (changing to RECT fixed the problem.)

--
Colin Neller
http://www.colinneller.com/blog


Nicholas Paldino said:
Mythran,

Yes, you can use the System.Drawing.Rectangle structure in place of
the RECT structure in interop calls. The structure layout is the same.

Hope this helps.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

Mythran said:
I have a question regarding the RECT structure required for PInvoke
calls. I was reviewing the Rectangle structure (System.Drawing.Rectangle)
and it occurred to me that I may be able to use this structure in place
of defining a RECT structure. I would create the RECT structure
definition the same as the Rectangle structure is defined. Is there any
problems with using Rectangle in place of RECT for the API functions?

Thanks,
Mythran
 
Nick,
Yes, I am. The fields internally are laid out in the same way that the
RECT structure does.

No they aren't, Colin is correct.

The property that you see, Right, is returned on the
fly, and there is not a backing store for it in the class.

Exactly, whereas in RECT "right" it's a field on its own.


Mattias
 
Mythran said:
I have a question regarding the RECT structure required for PInvoke
calls. I was reviewing the Rectangle structure
(System.Drawing.Rectangle) and it occurred to me that I may be able to
use this structure in place of defining a RECT structure. I would
create the RECT structure definition the same as the Rectangle structure
is defined. Is there any problems with using Rectangle in place of RECT
for the API functions?

Thanks,
Mythran
No you can't, the layout don't fit. This one works (at least form me :-) )

public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

I originaly have it from this article:
http://www.codeproject.com/csharp/win32.asp

HTH,
Andy
 
Back
Top