Reputation: 607
I am get window current orientation. window orientation like as Landscape , portrait , Landscape-flipped and portrait-flipped. I had tried to implement in window application but not get any solution. In the C# how to get and set orientation by using registry key or in c#.
Upvotes: 2
Views: 1941
Reputation: 607
Yes, There is such thing as orientation of window in winforms. In the winforms get screen rotation angle like 0,90,180 or 270. I have implemented this in my window application.
This is NativeMethod class ............ code.....
using System;
using System.Runtime.InteropServices;
namespace WindowApplication
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
public class NativeMethod
{
// PInvoke declaration for EnumDisplaySettings Win32 API
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode);
// PInvoke declaration for ChangeDisplaySettings Win32 API
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int ChangeDisplaySettings(ref DEVMODE lpDevMode, int dwFlags);
// helper for creating an initialized DEVMODE structure
public static DEVMODE CreateDevmode()
{
DEVMODE dm = new DEVMODE();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
return dm;
}
// constants
public const int ENUM_CURRENT_SETTINGS = -1;
public const int DISP_CHANGE_SUCCESSFUL = 0;
public const int DISP_CHANGE_BADDUALVIEW = -6;
public const int DISP_CHANGE_BADFLAGS = -4;
public const int DISP_CHANGE_BADMODE = -2;
public const int DISP_CHANGE_BADPARAM = -5;
public const int DISP_CHANGE_FAILED = -1;
public const int DISP_CHANGE_NOTUPDATED = -3;
public const int DISP_CHANGE_RESTART = 1;
public const int DMDO_DEFAULT = 0;
public const int DMDO_90 = 1;
public const int DMDO_180 = 2;
public const int DMDO_270 = 3;
}
}
Use blow code in main form ............
private string[] orientationNames = new string[4] { "Default", "90", "180", "270" };
private int[] orientationValues = new int[4]{NativeMethod.DMDO_DEFAULT,
NativeMethod.DMDO_90,
NativeMethod.DMDO_180,
NativeMethod.DMDO_270};
public static RotateFlipType currentOrientation { get; set; }
public void ChangeDisplaySettings() {
DEVMODE dm = NativeMethod.CreateDevmode();
GetSettings(ref dm);
switch (dm.dmDisplayOrientation)
{
case 0:
currentOrientation = RotateFlipType.RotateNoneFlipX;
break;
case 1:
currentOrientation = RotateFlipType.Rotate270FlipNone;
break;
case 2:
currentOrientation = RotateFlipType.Rotate180FlipX;
break;
case 3:
currentOrientation = RotateFlipType.Rotate90FlipNone;
break;
}
}
protected void SystemEvents_DisplaySettingsChanged(object sender, EventArgs events)
{
ChangeDisplaySettings();
}
Main form constructor.........
public MainForm()
{
SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged);
ChangeDisplaySettings();
}
Upvotes: 1
Reputation: 957
There is no such thing as orientation of a window in winforms.
You can use the form's Location and Size properties to set it's display rectangle, but as far as I know you can't easily flip it's content as in a print document.
Upvotes: 0