I'm trying to send the MCM_GETSELRANGE windows message to a standard MonthCalendar. Based on the documentation I have tried the following with no luck (the dates come back as nothing [as in they are not set to anything other than zero], however I do get a non-zero return value which seems to indicate that it succeeded?):
using System;
using System.Runtime.InteropServices;
namespace GetSelRange
{
class Program
{
static void Main(string[] args)
{
IntPtr targetWindowHandle = new IntPtr(68684130);
SYSTEMTIME[] dateRange = new SYSTEMTIME[2];
IntPtr success = SendMessage(targetWindowHandle, MCM_GETSELRANGE, IntPtr.Zero, dateRange);
}
#region Win32API
const uint MCM_FIRST = 0x1000;
const uint MCM_GETSELRANGE = MCM_FIRST + 5;
[StructLayout(LayoutKind.Sequential)]
private struct SYSTEMTIME
{
[MarshalAs(UnmanagedType.U2)]
public ushort Year;
[MarshalAs(UnmanagedType.U2)]
public ushort Month;
[MarshalAs(UnmanagedType.U2)]
public ushort DayOfWeek;
[MarshalAs(UnmanagedType.U2)]
public ushort Day;
[MarshalAs(UnmanagedType.U2)]
public ushort Hour;
[MarshalAs(UnmanagedType.U2)]
public ushort Minute;
[MarshalAs(UnmanagedType.U2)]
public ushort Second;
[MarshalAs(UnmanagedType.U2)]
public ushort Milliseconds;
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, SYSTEMTIME[] lParam);
#endregion
}
}
pinvoke.net does not seem to have any suggestions as to how this should be called.
Thank you