LayoutKind 列挙体とは? わかりやすく解説

LayoutKind 列挙体

アンマネージ コードエクスポートするときにオブジェクトレイアウト制御します

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration LayoutKind
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum LayoutKind
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum class LayoutKind
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public enum LayoutKind
SerializableAttribute 
ComVisibleAttribute(true) 
public enum LayoutKind
メンバメンバ
解説解説
使用例使用例

PtInRect 関数マネージ宣言の例を次に示します。この関数は、特定の点が四角形内に存在するかどうか確認しPoint 構造体Sequential レイアウト定義しRect 構造体Explicit レイアウト定義します

Enum Bool
   [False] = 0
   [True]
End Enum 'Bool
<StructLayout(LayoutKind.Sequential)>  _
Public Structure Point
   Public x As Integer
   Public y As Integer
End Structure 'Point

<StructLayout(LayoutKind.Explicit)>  _   
Public Structure Rect
   <FieldOffset(0)> Public left As Integer
   <FieldOffset(4)> Public top As Integer
   <FieldOffset(8)> Public right As Integer
   <FieldOffset(12)> Public bottom As
 Integer
End Structure 'Rect


Class LibWrapper
   
   <DllImport("user32.dll", CallingConvention :=
 CallingConvention.StdCall)>  _
   Public Shared Function
 PtInRect(ByRef r As Rect, p As
 Point) As Bool
   End Function    
End Class 'LibWrapper


Class TestApplication
   
   Public Shared Sub Main()
      Try
         Dim bPointInRect As Bool = 0
         Dim myRect As New
 Rect()
         myRect.left = 10
         myRect.right = 100
         myRect.top = 10
         myRect.bottom = 100
         Dim myPoint As New
 Point()
         myPoint.x = 50
         myPoint.y = 50
         bPointInRect = LibWrapper.PtInRect(myRect, myPoint)
         If bPointInRect = Bool.True Then
            Console.WriteLine("Point lies within the Rect")
         Else
            Console.WriteLine("Point did not lies within the Rect")
         End If
      Catch e As Exception
         Console.WriteLine(("Exception : " + e.Message.ToString()))
      End Try
   End Sub 'Main
End Class 'TestApplication
enum Bool
{
   False = 0,
   True
};
[StructLayout(LayoutKind.Sequential)]
public struct Point 
{
   public int x;
   public int y;
}   

[StructLayout(LayoutKind.Explicit)]
public struct Rect 
{
   [FieldOffset(0)] public int left;
   [FieldOffset(4)] public int top;
   [FieldOffset(8)] public int right;
   [FieldOffset(12)] public int bottom;
}   

class LibWrapper
{
   [DllImport("user32.dll", CallingConvention=CallingConvention.StdCall)]
   public static extern Bool PtInRect(ref Rect
 r, Point p);
};

class TestApplication
{
   public static void Main()
   {
      try
      {
         Bool bPointInRect = 0;
         Rect myRect = new Rect();
         myRect.left = 10;
         myRect.right = 100;
         myRect.top = 10;
         myRect.bottom = 100;
         Point myPoint = new Point();
         myPoint.x = 50;
         myPoint.y = 50;
         bPointInRect = LibWrapper.PtInRect(ref myRect, myPoint);
         if(bPointInRect == Bool.True)
            Console.WriteLine("Point lies within the Rect");
         else
            Console.WriteLine("Point did not lies within the Rect");
      }
      catch(Exception e)
      {
         Console.WriteLine("Exception : " + e.Message);
      }
   }
}
enum class Bool
{
   False = 0,
   True
};


[StructLayout(LayoutKind::Sequential)]
value struct Point
{
public:
   int x;
   int y;
};


[StructLayout(LayoutKind::Explicit)]
value struct Rect
{
public:

   [FieldOffset(0)]
   int left;

   [FieldOffset(4)]
   int top;

   [FieldOffset(8)]
   int right;

   [FieldOffset(12)]
   int bottom;
};

ref class LibWrapper
{
public:

   [DllImport("user32.dll",CallingConvention=CallingConvention::StdCall)]
   static Bool PtInRect( Rect * r, Point p );
};

int main()
{
   try
   {
      Bool bPointInRect = (Bool)0;
      Rect myRect = Rect(  );
      myRect.left = 10;
      myRect.right = 100;
      myRect.top = 10;
      myRect.bottom = 100;
      Point myPoint = Point(  );
      myPoint.x = 50;
      myPoint.y = 50;
      bPointInRect = LibWrapper::PtInRect(  &myRect, myPoint );
      if ( bPointInRect == Bool::True )
            Console::WriteLine( "Point lies within the Rect" );
      else
            Console::WriteLine( "Point did not lie within the Rect" );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }

}

enum Bool
{
    False (0),
    True (1);
} //Bool

/** @attribute StructLayout(LayoutKind.Sequential)
 */
public class Point
{
    public static int x;
    public static int y;
} //Point

/** @attribute StructLayout(LayoutKind.Explicit)
 */
public class Rect
{
    /** @attribute FieldOffset(0) */ public int
 left;

    /** @attribute FieldOffset(4) */ public int
 top;

    /** @attribute FieldOffset(8) */ public int
 right;

    /** @attribute FieldOffset(12) */ public int
 bottom;
} //Rect

class LibWrapper
{
    /** @attribute DllImport("user32.dll", 
        CallingConvention = CallingConvention.StdCall)
     */
    public static native Bool PtInRect(/**
 @ref */ Rect r, Point p);
} //LibWrapper

class TestApplication
{
    public static void main(String[]
 args)
    {
        try {
            Bool bPointInRect = (Bool)0;
            Rect myRect = new Rect();
            myRect.left = 10;
            myRect.right = 100;
            myRect.top = 10;
            myRect.bottom = 100;
            Point myPoint = new Point();
            myPoint.x = 50;
            myPoint.y = 50;
            bPointInRect = LibWrapper.PtInRect(/** @ ref */ myRect, myPoint);
            if (bPointInRect.Equals(Bool.True)) {
                Console.WriteLine("Point lies within the Rect");
            }
            else {
                Console.WriteLine("Point does not lie within the Rect");
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception : " + e.get_Message());
        }
    } //main
} //TestApplication
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
System.Runtime.InteropServices 名前空間



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「LayoutKind 列挙体」の関連用語

LayoutKind 列挙体のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



LayoutKind 列挙体のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS