C
Christian Schwarz
Hello,
I understand that the .NET CF controls are wrappers around the native Win32
controls. As the native ListBox under Windows CE seems to support a
horizontal scroll bar it should be possible to extend the .NET ListBox with
an horizontal scroll bar by using Win32 API functions.
Using the following code, I get the handle of my ListBox.
[DllImport("coredll.dll")]
static extern IntPtr GetCapture();
....
myListBox.Capture = true;
IntPtr hWndListBox = GetCapture();
....
The following code enables the horizontal scroll bar by setting the
WS_HSCROLL window style.
[DllImport("coredll.dll")]
static extern uint GetWindowLong(IntPtr hwnd, int index);
[DllImport("coredll.dll")]
static extern void SetWindowLong(IntPtr hwnd, int index, uint value);
....
uint windowLong = GetWindowLong(hWndListBox, -16) | 0x00100000;
SetWindowLong(hWndListBox, -16, windowLong);
....
Now that the horizontal scroll bar is visible one can use SetScrollInfo API
function to set the minimum, maximum and current scroll position. Although
setting the scroll position works, the scrolling of the ListBox content
doesn't work.
What could be the reason? Who is responsible for doing the actual scrolling?
The native Win32 ListBox control? Is there a general problem with my
approach?
Greetings, Christian
I understand that the .NET CF controls are wrappers around the native Win32
controls. As the native ListBox under Windows CE seems to support a
horizontal scroll bar it should be possible to extend the .NET ListBox with
an horizontal scroll bar by using Win32 API functions.
Using the following code, I get the handle of my ListBox.
[DllImport("coredll.dll")]
static extern IntPtr GetCapture();
....
myListBox.Capture = true;
IntPtr hWndListBox = GetCapture();
....
The following code enables the horizontal scroll bar by setting the
WS_HSCROLL window style.
[DllImport("coredll.dll")]
static extern uint GetWindowLong(IntPtr hwnd, int index);
[DllImport("coredll.dll")]
static extern void SetWindowLong(IntPtr hwnd, int index, uint value);
....
uint windowLong = GetWindowLong(hWndListBox, -16) | 0x00100000;
SetWindowLong(hWndListBox, -16, windowLong);
....
Now that the horizontal scroll bar is visible one can use SetScrollInfo API
function to set the minimum, maximum and current scroll position. Although
setting the scroll position works, the scrolling of the ListBox content
doesn't work.
What could be the reason? Who is responsible for doing the actual scrolling?
The native Win32 ListBox control? Is there a general problem with my
approach?
Greetings, Christian