728x90
반응형
728x170
■ GetWindowPlacement API 함수를 선언하는 방법을 보여준다.
▶ 예제 코드 (C#)
using System;
using System.Drawing;
using System.Runtime.InteropServices;
#region 윈도우 배치 구하기 - GetWindowPlacement(windowHandle, windowPlacement)
/// <summary>
/// 윈도우 배치 구하기
/// </summary>
/// <param name="windowHandle">윈도우 핸들</param>
/// <param name="windowPlacement">윈도우 배치</param>
/// <returns>처리 결과</returns>
[DllImport("user32", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowPlacement(IntPtr windowHandle, out WINDOWPLACEMENT windowPlacement);
#endregion
#region 윈도우 명령 표시 - ShowWindowCommand
/// <summary>
/// 윈도우 명령 표시
/// </summary>
public enum ShowWindowCommand : int
{
/// <summary>
/// SW_HIDE
/// </summary>
SW_HIDE = 0,
/// <summary>
/// SW_SHOWNORMAL
/// </summary>
SW_SHOWNORMAL = 1,
/// <summary>
/// SW_SHOWMINIMIZED
/// </summary>
SW_SHOWMINIMIZED = 2,
/// <summary>
/// SW_MAXIMIZE
/// </summary>
SW_MAXIMIZE = 3,
/// <summary>
/// SW_SHOWMAXIMIZED
/// </summary>
SW_SHOWMAXIMIZED = 3,
/// <summary>
/// SW_SHOWNOACTIVATE
/// </summary>
SW_SHOWNOACTIVATE = 4,
/// <summary>
/// SW_SHOW
/// </summary>
SW_SHOW = 5,
/// <summary>
/// SW_MINIMIZE
/// </summary>
SW_MINIMIZE = 6,
/// <summary>
/// SW_SHOWMINNOACTIVE
/// </summary>
SW_SHOWMINNOACTIVE = 7,
/// <summary>
/// SW_SHOWNA
/// </summary>
SW_SHOWNA = 8,
/// <summary>
/// SW_RESTORE
/// </summary>
SW_RESTORE = 9
}
#endregion
#region 포인트 - POINT
/// <summary>
/// 포인트
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// X
/// </summary>
public int X;
/// <summary>
/// Y
/// </summary>
public int Y;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - POINT(x, y)
/// <summary>
/// 생성자
/// </summary>
/// <param name="x">X 좌표</param>
/// <param name="y">Y 좌표</param>
public POINT(int x, int y)
{
X = x;
Y = y;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region Point 타입 암시적 변환하기 - Point(point)
/// <summary>
/// Point 타입 암시적 변환하기
/// </summary>
/// <param name="point">포인트</param>
public static implicit operator Point(POINT point)
{
return new Point(point.X, point.Y);
}
#endregion
#region POINT 타입 암시적 변환하기 - POINT(point)
/// <summary>
/// POINT 타입 암시적 변환하기
/// </summary>
/// <param name="point">포인트</param>
public static implicit operator POINT(Point point)
{
return new POINT(point.X, point.Y);
}
#endregion
}
#endregion
#region 사각형 - RECT
/// <summary>
/// 사각형
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// 왼쪽
/// </summary>
public int Left;
/// <summary>
/// 위쪽
/// </summary>
public int Top;
/// <summary>
/// 오른쪽
/// </summary>
public int Right;
/// <summary>
/// 아래쪽
/// </summary>
public int Bottom;
#endregion
}
#endregion
#region 윈도우 배치 - WINDOWPLACEMENT
/// <summary>
/// 윈도우 배치
/// </summary>
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct WINDOWPLACEMENT
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// 길이
/// </summary>
public int Length;
/// <summary>
/// 길이
/// </summary>
public int Flag;
/// <summary>
/// 윈도우 명령 표시 여부
/// </summary>
public ShowWindowCommand ShowWindowCommand;
/// <summary>
/// 최소 위치
/// </summary>
public POINT MinimumPosition;
/// <summary>
/// 최대 위치
/// </summary>
public POINT MaximumPosition;
/// <summary>
/// 일반 사각형
/// </summary>
public RECT NormalRectangle;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region 디폴트 - Default
/// <summary>
/// 디폴트
/// </summary>
public static WINDOWPLACEMENT Default
{
get
{
WINDOWPLACEMENT windowPlacement = new WINDOWPLACEMENT();
windowPlacement.Length = Marshal.SizeOf(windowPlacement);
return windowPlacement;
}
}
#endregion
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > WIN32' 카테고리의 다른 글
[C#/WIN32] DeviceIoControl API 함수 선언하기 (0) | 2021.08.28 |
---|---|
[C#/WIN32] LoadCursorFromFile API 함수 선언하기 (0) | 2021.08.28 |
[C#/WIN32] keybd_event API 함수 선언하기 (0) | 2021.08.28 |
[C#/WIN32] GetSystemMetrics API 함수 선언하기 (0) | 2021.08.28 |
[C#/WIN32] SetWindowPos API 함수 선언하기 (0) | 2021.08.28 |
[C#/WIN32] SetWindowPlacement API 함수 선언하기 (0) | 2021.08.28 |
[C#/WIN32] GetKeyState API 함수 선언하기 (0) | 2021.08.27 |
[C#/WIN32] ImmReleaseContext API 함수 선언하기 (0) | 2021.08.27 |
[C#/WIN32] ImmGetConversionStatus API 함수 선언하기 (0) | 2021.08.27 |
[C#/WIN32] ImmGetContext API 함수 선언하기 (0) | 2021.08.27 |
댓글을 달아 주세요