Checking for Screen Rotation Support using version 2 of the .NET Compact Framework - Visual Basic .Net version
Last year, I posted a snippet on how to determine whether or not your device supported screen rotation using the .NET Compact Framework. I have recently been asked for a Visual Basic .NET version of the snippet. Other than some minor reordering / reformatting, the code below is a direct port of the example from the C# post.
''--------------------------------------------------------------------- ''THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY ''KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE ''IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A ''PARTICULAR PURPOSE. ''---------------------------------------------------------------------Imports System.Runtime.InteropServicesImports System.Windows.Forms Module ScreenRotationCheckVBNet ' DeviceMode field value(s) Private Const DisplayQueryOrientation As Int32 = &H1000000 ' ChangeDisplaySettingsEx flags value(s) Private Const ChangeDisplaySettingsTest As Int32 = 2 ' P/Invoke signature(s) Declare Function ChangeDisplaySettingsEx Lib "coredll.dll" _ (ByVal deviceName As String, ByRef deviceMode As DeviceMode, _ ByVal hwnd As IntPtr, ByVal flags As Int32, ByVal param As IntPtr) As Int32 ''' <summary> ''' Application entry point ''' </summary> Sub Main() Dim message As String = String.Empty Dim rotationSupported As Boolean = False ' prepare the DeviceMode structure Dim devMode As New DeviceMode devMode.Size = Marshal.SizeOf(devMode) devMode.Fields = DisplayQueryOrientation ' ask the operating system if it supports screen rotation Dim result As Int32 result = ChangeDisplaySettingsEx(Nothing, _ devMode, _ IntPtr.Zero, _ ChangeDisplaySettingsTest, _ IntPtr.Zero) If (result = 0) Then ' ChangeDisplaySettingsEx call succeeded, ' we can check the results of our query ' non-zero value in DisplayOrientation means ' rotation is supported If (devMode.DisplayOrientation <> 0) Then rotationSupported = True End If ' format the message to display message = "Screen rotation supported: " + rotationSupported.ToString() Else ' ChangeDisplaySettingsEx call failed ' format the message to display message = "ChangeDisplaySettingsEx failed with error code: " + result.ToString() End If ' display our findings MessageBox.Show(message, "Screen rotation check") End Sub End Module ''' <summary>''' Managed version of the DEVMODE structure''' </summary>Structure DeviceMode <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _ Public DeviceName As String Public SpecVersion As Int16 Public DriverVersion As Int16 Public Size As Int16 Public DriverExtra As Int16 Public Fields As Int32 Public Orientation As Int16 Public PaperSize As Int16 Public PaperLength As Int16 Public Scale As Int16 Public Copies As Int16 Public DefaultSource As Int16 Public PrintQuality As Int16 Public Color As Int16 Public Duplex As Int16 Public YResolution As Int16 Public TTOption As Int16 Public Collate As Int16 <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _ Public FormName As String Public LogPixels As Int16 Public BitsPerPixel As Int32 Public PelsWidth As Int32 Public PelsHeight As Int32 Public DisplayFlags As Int32 Public DisplayFrequency As Int32 Public DisplayOrientation As Int32 End Structure
Enjoy!
-- DK
Disclaimer(s):
This posting is provided "AS IS" with no warranties, and confers no rights.
Comments
- Anonymous
June 09, 2009
PingBack from http://quickdietsite.info/story.php?id=5914