Mega Code Archive

 
Categories / C# Tutorial / Windows
 

Calling a Function with a Structure Parameter

// Code from  // A Programmer's Introduction to C# 2.0, Third Edition // copyright 2000 Eric Gunnerson using System; using System.Runtime.InteropServices; struct Point {     public int x;     public int y;          public override string ToString()     {         return(String.Format("({0}, {1})", x, y));     } } struct Rect {     public int left;     public int top;     public int right;     public int bottom;          public override string ToString()     {         return(String.Format("({0}, {1})\n    ({2}, {3})", left, top, right, bottom));     } } struct WindowPlacement {     public uint length;     public uint flags;     public uint showCmd;     public Point minPosition;     public Point maxPosition;     public Rect normalPosition;              public override string ToString()     {         return(String.Format("min, max, normal:\n{0}\n{1}\n{2}",         minPosition, maxPosition, normalPosition));     } } class MainClass {     [DllImport("user32")]     static extern IntPtr GetForegroundWindow();          [DllImport("user32")]     static extern bool GetWindowPlacement(IntPtr handle, ref WindowPlacement wp);          public static void Main()     {         IntPtr window = GetForegroundWindow();                  WindowPlacement wp = new WindowPlacement();         wp.length = (uint) Marshal.SizeOf(wp);                  bool result = GetWindowPlacement(window, ref wp);                  if (result)         {             Console.WriteLine(wp);         }     }  } min, max, normal: (-32000, -32000) (-60, -8) (-1, -1) (1273, 728)