92 #define DT_END_FORMAT 0 93 #define ONEDIGITDAY 0x01 94 #define TWODIGITDAY 0x02 95 #define THREECHARDAY 0x03 97 #define ONEDIGIT12HOUR 0x11 98 #define TWODIGIT12HOUR 0x12 99 #define ONEDIGIT24HOUR 0x21 100 #define TWODIGIT24HOUR 0x22 101 #define ONEDIGITMINUTE 0x31 102 #define TWODIGITMINUTE 0x32 103 #define ONEDIGITMONTH 0x41 104 #define TWODIGITMONTH 0x42 105 #define THREECHARMONTH 0x43 106 #define FULLMONTH 0x44 107 #define ONEDIGITSECOND 0x51 108 #define TWODIGITSECOND 0x52 109 #define ONELETTERAMPM 0x61 110 #define TWOLETTERAMPM 0x62 111 #define ONEDIGITYEAR 0x71 112 #define TWODIGITYEAR 0x72 113 #define INVALIDFULLYEAR 0x73 114 #define FULLYEAR 0x74 115 #define FORMATCALLBACK 0x81 116 #define FORMATCALLMASK 0x80 117 #define DT_STRING 0x0100 119 #define DTHT_DATEFIELD 0xff 121 #define DTHT_NONE 0x1000 122 #define DTHT_CHECKBOX 0x2000 123 #define DTHT_MCPOPUP 0x3000 124 #define DTHT_GOTFOCUS 0x4000 125 #define DTHT_NODATEMASK 0xf000 150 *systime = infoPtr->
date;
196 if (!systime)
return FALSE;
198 TRACE(
"%04d/%02d/%02d %02d:%02d:%02d\n",
203 if (systime->
wYear == 0 ||
207 systime->
wHour > 23 ||
219 infoPtr->
date = *systime;
261 for (
i = 0; formattxt[
i];
i++) {
262 TRACE (
"\n%d %c:",
i, formattxt[
i]);
263 if (!inside_literal) {
264 for (
j = 0;
j <
len;
j++) {
267 if ((*nrFields==0) && (infoPtr->
fieldspec[*nrFields]==0)) {
271 if (infoPtr->
fieldspec[*nrFields] >> 4 !=
j) {
289 if (formattxt[
i] ==
'\'')
291 inside_literal = !inside_literal;
297 if ((*nrFields==0) && (infoPtr->
fieldspec[*nrFields]==0)) {
299 infoPtr->
buflen[*nrFields] = 0;
303 infoPtr->
buflen[*nrFields] = 0;
307 infoPtr->
buflen[*nrFields]++;
311 FIXME (
"out of memory; should reallocate. crash ahead.\n");
317 if (infoPtr->
fieldspec[*nrFields] != 0) (*nrFields)++;
324 WCHAR format_buf[80];
386 if (txtlen > resultSize)
387 txtlen = resultSize - 1;
413 if (
date.wHour == 0) {
422 if (
date.wHour == 0) {
472 FIXME (
"Not implemented\n");
491 static int wrap(
int val,
int delta,
int minVal,
int maxVal)
494 if (delta ==
INT_MIN ||
val < minVal)
return maxVal;
495 if (delta ==
INT_MAX ||
val > maxVal)
return minVal;
562 FIXME (
"Not implemented\n");
571 if (10000 *
date->wYear + 100 *
date->wMonth +
date->wDay < 17520914) {
586 int i = (
min ? 0 : 1);
681 for (
i = 0;
i < max_count;
i++)
738 field->left = prevright;
742 prevright =
field->right;
808 for(--
i;
i >= 0;
i--)
840 oldyear =
date.wYear;
846 date.wYear = oldyear;
851 oldyear =
date.wYear;
857 date.wYear = oldyear;
877 if (
date.wHour >= 12)
897 if (
val ==
'a' ||
val ==
'A') {
898 if (
date.wHour >= 12)
900 }
else if (
val ==
'p' ||
val ==
'P') {
945 if (
new == -1)
return 0;
974 rcMonthCal.right - rcMonthCal.left, rcMonthCal.bottom - rcMonthCal.top, 0);
982 TRACE(
"update calendar %04d/%02d/%02d\n",
983 lprgSysTimeArray->
wYear, lprgSysTimeArray->
wMonth, lprgSysTimeArray->
wDay);
993 TRACE (
"dt:%p mc:%p mc parent:%p, desktop:%p\n",
1075 HBRUSH hBrush, hSolidBrush =
NULL;
1109 TRACE(
"got from calendar %04d/%02d/%02d day of week %d\n",
1118 TRACE(
"Delta pos %d\n", lpnmud->iDelta);
1133 if ((fieldNum==0) && (infoPtr->
select))
return 0;
1136 FIXME (
"Callbacks not implemented yet\n");
1172 if (
new != infoPtr->
select)
1184 if (
new != infoPtr->
select)
1198 int fieldNum, fieldSpec;
1201 fieldSpec = infoPtr->
fieldspec[fieldNum];
1208 }
else if (vkCode >=
'0' && vkCode <=
'9') {
1243 if ((fieldNum==0) && (infoPtr->
select))
return 0;
1263 TRACE(
"lost focus to %p\n", lostFocus);
1292 TRACE(
"got focus from %p\n", lostFocus);
1329 dtdtc.
st = infoPtr->
date;
1390 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
1408 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
1417 2, 2, 13, 13, infoPtr->
hwndSelf, 0,
1455 size->cy = field_size.
cy;
1504 if (!infoPtr)
return -1;
1522 0, 0, 0, 0, infoPtr->
hwndSelf, 0, 0, 0);
1560 if (!
dst || (
count <= 0))
return 0;
1580 for (
i = 0;
i <
info->nrFields;
i++)
1688 case WM_STYLECHANGING:
1691 case WM_STYLECHANGED:
1711 ERR(
"unknown msg %04x wp=%08lx lp=%08lx\n",
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
GLint GLint GLsizei width
void DATETIME_Unregister(void)
static LRESULT DATETIME_StyleChanging(DATETIME_INFO *infoPtr, WPARAM wStyleType, STYLESTRUCT *lpss)
static BOOL DATETIME_SetFormatW(DATETIME_INFO *infoPtr, LPCWSTR format)
#define LOCALE_SABBREVMONTHNAME1
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
static unsigned int bufptr
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
HDC WINAPI GetDC(_In_opt_ HWND)
#define MCM_GETMINREQRECT
static BOOL DATETIME_GetIdealSize(DATETIME_INFO *infoPtr, SIZE *size)
static int DATETIME_GetFieldWidth(const DATETIME_INFO *infoPtr, HDC hdc, int count)
static LRESULT DATETIME_Button_Command(DATETIME_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
#define LOCALE_SABBREVDAYNAME1
#define LOCALE_USER_DEFAULT
GLuint GLuint GLsizei count
static LRESULT DATETIME_NCCreate(HWND hwnd, const CREATESTRUCTW *lpcs)
static LRESULT DATETIME_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
static LRESULT DATETIME_KeyDown(DATETIME_INFO *infoPtr, DWORD vkCode)
static BOOL DATETIME_SendDateTimeChangeNotify(const DATETIME_INFO *infoPtr)
static LRESULT DATETIME_LButtonUp(DATETIME_INFO *infoPtr)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
GLint GLint GLint GLint GLint x
HWND WINAPI SetFocus(_In_opt_ HWND)
static INT DATETIME_GetText(const DATETIME_INFO *infoPtr, INT count, LPWSTR dst)
static int DATETIME_GetTextLength(const DATETIME_INFO *info)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
static BOOL DATETIME_SetFormatA(DATETIME_INFO *infoPtr, LPCSTR lpszFormat)
#define GetWindowLongPtrW
static LRESULT DATETIME_SetFont(DATETIME_INFO *infoPtr, HFONT font, BOOL repaint)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
static void DATETIME_IncreaseField(DATETIME_INFO *infoPtr, int number, int delta)
BOOL WINAPI DestroyWindow(_In_ HWND)
int MONTHCAL_CalculateDayOfWeek(SYSTEMTIME *date, BOOL inplace)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
GLenum GLuint GLenum GLsizei const GLchar * buf
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
WINE_DEFAULT_DEBUG_CHANNEL(datetime)
#define LOCALE_SMONTHNAME1
COLORREF clrActiveCaption
static LRESULT DATETIME_SetFocus(DATETIME_INFO *infoPtr, HWND lostFocus)
void DATETIME_Register(void)
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
#define DTS_LONGDATEFORMAT
HWND WINAPI CreateUpDownControl(DWORD style, INT x, INT y, INT cx, INT cy, HWND parent, INT id, HINSTANCE inst, HWND buddy, INT maxVal, INT minVal, INT curVal)
static size_t double number
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
static void DATETIME_ApplySelectedField(DATETIME_INFO *infoPtr)
static LRESULT DATETIME_Char(DATETIME_INFO *infoPtr, WPARAM vkCode)
static void DATETIME_ReturnTxt(const DATETIME_INFO *infoPtr, int count, LPWSTR result, int resultSize)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
GLenum GLuint GLenum GLsizei length
static int DATETIME_GetPrevDateField(const DATETIME_INFO *infoPtr, int i)
LONG MONTHCAL_CompareSystemTime(const SYSTEMTIME *first, const SYSTEMTIME *second) DECLSPEC_HIDDEN
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
HWND WINAPI GetDesktopWindow(void)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
static void DATETIME_UseFormat(DATETIME_INFO *infoPtr, LPCWSTR formattxt)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static BOOL DATETIME_SendSimpleNotify(const DATETIME_INFO *infoPtr, UINT code)
static void DATETIME_SetSelectedField(DATETIME_INFO *infoPtr, int select)
const char * wine_dbgstr_point(const POINT *guid)
static DWORD DATETIME_GetSystemTime(const DATETIME_INFO *infoPtr, SYSTEMTIME *systime)
static LRESULT DATETIME_Size(DATETIME_INFO *infoPtr, INT width, INT height)
int MONTHCAL_MonthLength(int month, int year)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
static LRESULT DATETIME_Destroy(DATETIME_INFO *infoPtr)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
static BOOL DATETIME_SetSystemTime(DATETIME_INFO *infoPtr, DWORD flag, const SYSTEMTIME *systime)
#define DTS_SHORTDATECENTURYFORMAT
COMCTL32_SysColor comctl32_color
#define DTM_GETSYSTEMTIME
static LRESULT DATETIME_Notify(DATETIME_INFO *infoPtr, const NMHDR *lpnmh)
#define DTM_SETSYSTEMTIME
static LRESULT DATETIME_LButtonDown(DATETIME_INFO *infoPtr, INT x, INT y)
static BOOL DATETIME_IsDateInValidRange(const DATETIME_INFO *infoPtr, const SYSTEMTIME *date)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
#define LOCALE_SSHORTDATE
static LRESULT WINAPI DATETIME_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define memcpy(s1, s2, n)
static const WCHAR allowedformatchars[]
GLint GLint GLsizei GLsizei height
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define DATETIMEPICK_CLASSW
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static const int maxrepetition[]
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
GLint GLint GLint GLint GLint GLint y
#define MultiByteToWideChar
static LRESULT DATETIME_VScroll(DATETIME_INFO *infoPtr, WORD wScroll)
static INT DATETIME_HitTest(const DATETIME_INFO *infoPtr, POINT pt)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static LRESULT DATETIME_KillFocus(DATETIME_INFO *infoPtr, HWND lostFocus)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
static const SYSTEMTIME max_allowed_date
static LRESULT DATETIME_Enable(DATETIME_INFO *infoPtr, BOOL bEnable)
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
static LRESULT DATETIME_Paint(DATETIME_INFO *infoPtr, HDC hdc)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
static LRESULT DATETIME_StyleChanged(DATETIME_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SetWindowLongPtrW
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
struct DATETIME_INFO * LPDATETIME_INFO
static LRESULT DATETIME_EraseBackground(const DATETIME_INFO *infoPtr, HDC hdc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
#define DTN_DATETIMECHANGE
#define LOCALE_STIMEFORMAT
static const SYSTEMTIME min_allowed_date
static LRESULT DATETIME_Command(DATETIME_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
static int wrap(int val, int delta, int minVal, int maxVal)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
static void DATETIME_Refresh(DATETIME_INFO *infoPtr, HDC hdc)