@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The joy of coding for .Net Compact Framework is that you often need to do some tweaks to obtain what is normally available in the Full Framework. One instance is wrapping the text of a button control so that it can appear on multiple lines. There's no property readily available at design time to allow this on the .Net Compact Framework and an alternative is to use SetWindowLong and GetWindowLong. !!!!C# Signature: [DllImport("coredll.dll", SetLastError=true)] private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); [DllImport("coredll.dll", SetLastError=true)] private static extern int GetWindowLong(IntPtr hWnd, int nIndex); !!!!VB Signature: <DllImport("coredll.dll", SetLastError:=True)> _ Private Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer End Function <DllImport("coredll.dll", SetLastError:=True)> _ Private Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer End Function !!!!User-Defined Types: None. !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: The sample code is compatible with Visual Studio .Net 2005. ==> For Windows 8.1 and later You must use "user32.dll" instead of "coredll.dll". ========= !!!!Tips & Tricks: Please add some! !!!!Sample Code: private const int GWL_STYLE = -16; private const int BS_CENTER = 0x00000300; private const int BS_VCENTER = 0x00000C00; private const int BS_MULTILINE = 0x00002000; public static void SetButtonStyle(Button ctrl) { IntPtr hWnd; int style; // ctrl.Capture = true; // hWnd = GetCapture(); // ctrl.Capture = false; // Comment below and uncomment above if using Visual Studio 2003 hWnd = ctrl.Handle; style = GetWindowLong(hWnd, GWL_STYLE); SetWindowLong(hWnd, GWL_STYLE, (style | BS_CENTER | BS_VCENTER | BS_MULTILINE)); ctrl.Refresh(); } .... and much the same in VB.NET - tested on VS2008/Windows CE 6 Option Explicit On Option Strict On Imports System.Runtime.InteropServices Module MultiLineButtonFix <DllImport("coredll.dll", SetLastError:=True)> _ Private Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer End Function <DllImport("coredll.dll", SetLastError:=True)> _ Private Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer End Function Private Const GWL_STYLE As Int32 = -16 Private Const BS_CENTER As Int32 = &H300 Private Const BS_VCENTER As Int32 = &HC00 Private Const BS_MULTILINE As Int32 = &H2000 Public Sub SetButtonStyle(ByVal ctrl As Button) Dim hWnd As IntPtr Dim style As Integer hWnd = ctrl.Handle style = GetWindowLong(hWnd, GWL_STYLE) SetWindowLong(hWnd, GWL_STYLE, (style Or BS_VCENTER Or BS_MULTILINE)) ctrl.Refresh() End Sub End Module Documentation: SetWindowLong@msdn on MSDN
Edit coredll.setwindow...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.