Browse Source

* Patch by Paul Ishenin for wince's commctrl.

git-svn-id: trunk@12967 -
yury 16 years ago
parent
commit
d779e1e587
1 changed files with 108 additions and 0 deletions
  1. 108 0
      packages/winceunits/src/commctrl.pp

+ 108 - 0
packages/winceunits/src/commctrl.pp

@@ -199,6 +199,80 @@ const
   HDN_TRACK = HDN_TRACKW;
   HDN_GETDISPINFO = HDN_GETDISPINFOW;
      
+  // MONTHCAL CONTROL
+  MONTHCAL_CLASS        = 'SysMonthCal32';
+  MCM_FIRST             = $1000;
+  MCM_GETCURSEL         = MCM_FIRST + 1;
+  MCM_SETCURSEL         = MCM_FIRST + 2;
+  MCM_GETMAXSELCOUNT    = MCM_FIRST + 3;
+  MCM_SETMAXSELCOUNT    = MCM_FIRST + 4;
+  MCM_GETSELRANGE       = MCM_FIRST + 5;
+  MCM_SETSELRANGE       = MCM_FIRST + 6;
+  MCM_GETMONTHRANGE     = MCM_FIRST + 7;
+  MCM_SETDAYSTATE       = MCM_FIRST + 8;
+  MCM_GETMINREQRECT     = MCM_FIRST + 9;
+  MCM_SETCOLOR          = MCM_FIRST + 10;
+  MCM_GETCOLOR          = MCM_FIRST + 11;
+
+  // color consts
+  MCSC_BACKGROUND   = 0;   // the background color (between months)
+  MCSC_TEXT         = 1;   // the dates
+  MCSC_TITLEBK      = 2;   // background of the title
+  MCSC_TITLETEXT    = 3;
+  MCSC_MONTHBK      = 4;   // background within the month cal
+  MCSC_TRAILINGTEXT = 5;   // the text color of header & trailing days
+
+  MCM_SETTODAY          = MCM_FIRST + 12;
+  MCM_GETTODAY          = MCM_FIRST + 13;
+  MCM_HITTEST           = MCM_FIRST + 14;
+
+  // hittest contst
+  MCHT_TITLE     = $00010000;
+  MCHT_CALENDAR  = $00020000;
+  MCHT_TODAYLINK = $00030000;
+  MCHT_NONELINK  = $00040000;
+  MCHT_NEXT      = $01000000;   // these indicate that hitting
+  MCHT_PREV      = $02000000;  // here will go to the next/prev month
+  MCHT_NOWHERE   = $00000000;
+  MCHT_TITLEBK          = MCHT_TITLE;
+  MCHT_TITLEMONTH       = MCHT_TITLE or $0001;
+  MCHT_TITLEYEAR        = MCHT_TITLE or $0002;
+  MCHT_TITLEBTNNEXT     = MCHT_TITLE or MCHT_NEXT or $0003;
+  MCHT_TITLEBTNPREV     = MCHT_TITLE or MCHT_PREV or $0003;
+  MCHT_CALENDARBK       = MCHT_CALENDAR;
+  MCHT_CALENDARDATE     = MCHT_CALENDAR or $0001;
+  MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE or MCHT_NEXT;
+  MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE or MCHT_PREV;
+  MCHT_CALENDARDAY      = MCHT_CALENDAR or $0002;
+  MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR or $0003;
+
+  MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15;
+  MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16;
+  MCM_GETRANGE          = MCM_FIRST + 17;
+  MCM_SETRANGE          = MCM_FIRST + 18;
+  MCM_GETMONTHDELTA     = MCM_FIRST + 19;
+  MCM_SETMONTHDELTA     = MCM_FIRST + 20;
+  MCM_GETMAXTODAYWIDTH  = MCM_FIRST + 21;
+  MCM_GETMAXNONEWIDTH   = MCM_FIRST + 22;
+
+  // notifications
+  MCN_SELCHANGE   = MCN_FIRST + 1;
+  MCN_GETDAYSTATE = MCN_FIRST + 3;
+  MCN_SELECT      = MCN_FIRST + 4;
+  MCN_SELECTNONE  = MCN_FIRST + 5;
+
+  // control styles
+  MCS_DAYSTATE      = $0001;
+  MCS_MULTISELECT   = $0002;
+  MCS_WEEKNUMBERS   = $0004;
+  MCS_SHOWNONE      = $0080;
+  MCS_NOTODAYCIRCLE = $0008;
+  MCS_NOTODAY       = $0010;
+
+  GMR_VISIBLE  = 0; // visible portion of display
+  GMR_DAYSTATE = 1; // above plus the grayed out parts of
+                    // partially displayed months
+
   // DATETIMEPICK CONTROL
   DATETIMEPICK_CLASS  ='SysDateTimePick32';
   DTM_FIRST           = $1000;
@@ -398,6 +472,40 @@ const
 //*****************************************************************************
 
 type
+  // MONTHCAL CONTROL
+  MONTHDAYSTATE   = DWORD;
+  LPMONTHDAYSTATE = ^MONTHDAYSTATE;
+  TMonthDayState  = MONTHDAYSTATE;
+  PMonthDayState  = LPMONTHDAYSTATE;
+
+  MCHITTESTINFO = record
+    cbSize: UINT;
+    pt    : POINT;
+    uHit  : UINT;          // out param
+    st    : SYSTEMTIME;
+  end;
+  TMCMHITTESTINFO = MCHITTESTINFO;
+  PMCMHitTestInfo = ^MCHITTESTINFO;
+
+  tagNMSELCHANGE = record
+    nmhdr     : NMHDR;      // this must be first, so we don't break WM_NOTIFY
+    stSelStart: SYSTEMTIME;
+    stSelEnd  : SYSTEMTIME;
+  end;
+  NMSELCHANGE = tagNMSELCHANGE;
+  TNMSELCHANGE = tagNMSELCHANGE;
+  LPNMSELCHANGE = ^tagNMSELCHANGE;
+
+  tagNMDAYSTATE = record
+    nmhdr      : NMHDR;           // this must be first, so we don't break WM_NOTIFY
+    stStart    : SYSTEMTIME;
+    cDayState  : longint;
+    prgDayState: LPMONTHDAYSTATE; // points to cDayState MONTHDAYSTATEs
+  end;
+  NMDAYSTATE = tagNMDAYSTATE;
+  TNMDAYSTATE = tagNMDAYSTATE;
+  LPNMDAYSTATE = ^tagNMDAYSTATE;
+
   // DATETIMEPICK CONTROL
   tagNMDATETIMECHANGE = record
     nmhdr   : NMHDR;