// 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; }
public void PostData(int id, int data) { // initialize the DEVMODE structure DEVMODE dm = new DEVMODE(); dm.dmDeviceName = new string(new char[32]); dm.dmFormName = new string(new char[32]); dm.dmSize = (short)Marshal.SizeOf(dm); if (0 != NativeMethods.EnumDisplaySettings(null, NativeMethods.ENUM_CURRENT_SETTINGS, ref dm)) { if (data != last_data) { // swap width and height int temp = dm.dmPelsHeight; dm.dmPelsHeight = dm.dmPelsWidth; dm.dmPelsWidth = temp; // determine new orientation switch (data) { case 3: dm.dmDisplayOrientation = NativeMethods.DMDO_270; last_data = data; break; case 2: dm.dmDisplayOrientation = NativeMethods.DMDO_180; last_data = data; break; case 1: dm.dmDisplayOrientation = NativeMethods.DMDO_90; last_data = data; break; case 0: dm.dmDisplayOrientation = NativeMethods.DMDO_DEFAULT; last_data = data; break; default: // unknown orientation value // add exception handling here break; } int iRet = NativeMethods.ChangeDisplaySettings(ref dm, 0); if (NativeMethods.DISP_CHANGE_SUCCESSFUL != iRet) { // add exception handling here } } } }
public static extern int ChangeDisplaySettings(ref DEVMODE lpDevMode, int dwFlags);
public static extern int EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode);