Sep 12
mobile利用系统调用,改变屏幕方向
Posted in
技术文章
528 Comment(s)
可能是因为google浏览器的原因,我的文章提交了但是没有记录下来。对不起大家了。
下次写完一定记得检查下,原文已经没有了,当时是随手写的。
看来下次还是打草稿的好啊。
代码还在 先补上
当初写了那么多,现在才发现没有了。没有心情写了。
不过羊头都挂出去了 ,现在再贴点代码吧
public static Size GetScreenSize()
{
IntPtr hdcSrc = GDIApi.GetWindowDC(GDIApi.GetDesktopWindow());
return new Size( GDIApi.GetDeviceCaps(hdcSrc,8),GDIApi.GetDeviceCaps(hdcSrc,10));
}
public static void RotateWindow(int Anage)
{
uint DMDO;
switch(Anage)
{
case 90:
DMDO=1;
break;
case 180:
DMDO=2;
break;
case 270:
DMDO=3;
break;
default:
DMDO=0;
break;
}
CShWinAPI.DEVMODE dm = new CShWinAPI.DEVMODE();
dm.dmSize = (short)Marshal.SizeOf(typeof(CShWinAPI.DEVMODE));
dm.dmDisplayOrientation=DMDO;
dm.dmFields = CShWinAPI.DM_DISPLAYORIENTATION;
CShWinAPI.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, CShWinAPI.CDS_RESET, IntPtr.Zero);
}
关于API的函数定义
[DllImport("coredll.dll", CharSet=CharSet.Auto)]
public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, [In] ref DEVMODE lpDevMode, IntPtr hwnd, uint dwFlags, IntPtr lParam);
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public uint dmFields;
public short dmOrientation;
public short dmPaperSize;
public short dmPaperLength;
public short dmPaperWidth;
public short dmScale;
public short dmCopies;
public short dmDefaultSource;
public short dmPrintQuality;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmFormName;
public short dmLogPixels;
public uint dmBitsPerPel;
public uint dmPelsWidth;
public uint dmPelsHeight;
public uint dmDisplayFlags;
public uint dmDisplayFrequency;
public uint dmDisplayOrientation;
}
使用的例子
Size m_Size;
m_Size= GetScreenSize();
if(m_Size.Width<m_Size.Height) RotateWindow(90);
不过羊头都挂出去了 ,现在再贴点代码吧
public static Size GetScreenSize()
{
IntPtr hdcSrc = GDIApi.GetWindowDC(GDIApi.GetDesktopWindow());
return new Size( GDIApi.GetDeviceCaps(hdcSrc,8),GDIApi.GetDeviceCaps(hdcSrc,10));
}
public static void RotateWindow(int Anage)
{
uint DMDO;
switch(Anage)
{
case 90:
DMDO=1;
break;
case 180:
DMDO=2;
break;
case 270:
DMDO=3;
break;
default:
DMDO=0;
break;
}
CShWinAPI.DEVMODE dm = new CShWinAPI.DEVMODE();
dm.dmSize = (short)Marshal.SizeOf(typeof(CShWinAPI.DEVMODE));
dm.dmDisplayOrientation=DMDO;
dm.dmFields = CShWinAPI.DM_DISPLAYORIENTATION;
CShWinAPI.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, CShWinAPI.CDS_RESET, IntPtr.Zero);
}
关于API的函数定义
[DllImport("coredll.dll", CharSet=CharSet.Auto)]
public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, [In] ref DEVMODE lpDevMode, IntPtr hwnd, uint dwFlags, IntPtr lParam);
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public uint dmFields;
public short dmOrientation;
public short dmPaperSize;
public short dmPaperLength;
public short dmPaperWidth;
public short dmScale;
public short dmCopies;
public short dmDefaultSource;
public short dmPrintQuality;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmFormName;
public short dmLogPixels;
public uint dmBitsPerPel;
public uint dmPelsWidth;
public uint dmPelsHeight;
public uint dmDisplayFlags;
public uint dmDisplayFrequency;
public uint dmDisplayOrientation;
}
使用的例子
Size m_Size;
m_Size= GetScreenSize();
if(m_Size.Width<m_Size.Height) RotateWindow(90);
我明明记得我发表了的
不过羊头都挂出去了 ,现在再贴点代码吧
public static Size GetScreenSize()
{
IntPtr hdcSrc = GDIApi.GetWindowDC(GDIApi.GetDesktopWindow());
return new Size( GDIApi.GetDeviceCaps(hdcSrc,8),GDIApi.GetDeviceCaps(hdcSrc,10));
}
public static void RotateWindow(int Anage)
{
uint DMDO;
switch(Anage)
{
case 90:
DMDO=1;
break;
case 180:
DMDO=2;
break;
case 270:
DMDO=3;
break;
default:
DMDO=0;
break;
}
CShWinAPI.DEVMODE dm = new CShWinAPI.DEVMODE();
dm.dmSize = (short)Marshal.SizeOf(typeof(CShWinAPI.DEVMODE));
dm.dmDisplayOrientation=DMDO;
dm.dmFields = CShWinAPI.DM_DISPLAYORIENTATION;
CShWinAPI.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, CShWinAPI.CDS_RESET, IntPtr.Zero);
}
关于API的函数定义
[DllImport("coredll.dll", CharSet=CharSet.Auto)]
public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, [In] ref DEVMODE lpDevMode, IntPtr hwnd, uint dwFlags, IntPtr lParam);
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public uint dmFields;
public short dmOrientation;
public short dmPaperSize;
public short dmPaperLength;
public short dmPaperWidth;
public short dmScale;
public short dmCopies;
public short dmDefaultSource;
public short dmPrintQuality;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string dmFormName;
public short dmLogPixels;
public uint dmBitsPerPel;
public uint dmPelsWidth;
public uint dmPelsHeight;
public uint dmDisplayFlags;
public uint dmDisplayFrequency;
public uint dmDisplayOrientation;
}
使用的例子
Size m_Size;
m_Size= GetScreenSize();
if(m_Size.Width<m_Size.Height) RotateWindow(90);
<a href="http://urlser.com/?IQpnn#2">car insurance quotes</a>
online poker
http://black-jack-mo.lookera.net#4
[http://roulette-mo.lookera.net#5 roulette]
"texas holdem":http://texas-holdem-mo.lookera.net#6
[LINK http://online-poker-mo.lookera.net#7]online poker[/LINK]
<img src="http://victor.freewebhostingpro.com/1.php" alt="" border="0" />