diff --git a/dlls/comctl32/Makefile.in b/dlls/comctl32/Makefile.in index b0960c6ca34..5f5869456aa 100644 --- a/dlls/comctl32/Makefile.in +++ b/dlls/comctl32/Makefile.in @@ -10,11 +10,13 @@ C_SRCS = \ comboex.c \ comctl32undoc.c \ commctrl.c \ + datetime.c \ header.c \ hotkey.c \ imagelist.c \ ipaddress.c \ listview.c \ + monthcal.c \ nativefont.c \ pager.c \ progress.c \ diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c new file mode 100644 index 00000000000..d9f816a69b1 --- /dev/null +++ b/dlls/comctl32/datetime.c @@ -0,0 +1,128 @@ +/* + * Date and time picker control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + * + */ + +#include "windows.h" +#include "commctrl.h" +#include "datetime.h" +#include "win.h" +#include "debug.h" + + +#define DATETIME_GetInfoPtr(wndPtr) ((DATETIME_INFO *)wndPtr->wExtra[0]) + + + + + + +static LRESULT +DATETIME_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + DATETIME_INFO *infoPtr; + + /* allocate memory for info structure */ + infoPtr = (DATETIME_INFO *)COMCTL32_Alloc (sizeof(DATETIME_INFO)); + wndPtr->wExtra[0] = (DWORD)infoPtr; + + if (infoPtr == NULL) { + ERR (datetime, "could not allocate info memory!\n"); + return 0; + } + + if ((DATETIME_INFO*)wndPtr->wExtra[0] != infoPtr) { + ERR (datetime, "pointer assignment error!\n"); + return 0; + } + + /* initialize info structure */ + + + + return 0; +} + + +static LRESULT +DATETIME_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + DATETIME_INFO *infoPtr = DATETIME_GetInfoPtr(wndPtr); + + + + + + + /* free ipaddress info data */ + COMCTL32_Free (infoPtr); + + return 0; +} + + + + +LRESULT WINAPI +DATETIME_WindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { + + + case WM_CREATE: + return DATETIME_Create (wndPtr, wParam, lParam); + + case WM_DESTROY: + return DATETIME_Destroy (wndPtr, wParam, lParam); + + default: + if (uMsg >= WM_USER) + ERR (datetime, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +VOID +DATETIME_Register (VOID) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (DATETIMEPICK_CLASS32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS; + wndClass.lpfnWndProc = (WNDPROC32)DATETIME_WindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(DATETIME_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = (HBRUSH32)(COLOR_WINDOW + 1); + wndClass.lpszClassName = DATETIMEPICK_CLASS32A; + + RegisterClass32A (&wndClass); +} + + +VOID +DATETIME_Unregister (VOID) +{ + if (GlobalFindAtom32A (DATETIMEPICK_CLASS32A)) + UnregisterClass32A (DATETIMEPICK_CLASS32A, (HINSTANCE32)NULL); +} + diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c new file mode 100644 index 00000000000..eb29519db28 --- /dev/null +++ b/dlls/comctl32/monthcal.c @@ -0,0 +1,128 @@ +/* + * Month calendar control + * + * Copyright 1998 Eric Kohl + * + * NOTES + * This is just a dummy control. An author is needed! Any volunteers? + * I will only improve this control once in a while. + * Eric + * + * TODO: + * - All messages. + * - All notifications. + * + */ + +#include "windows.h" +#include "commctrl.h" +#include "monthcal.h" +#include "win.h" +#include "debug.h" + + +#define MONTHCAL_GetInfoPtr(wndPtr) ((MONTHCAL_INFO *)wndPtr->wExtra[0]) + + + + + + +static LRESULT +MONTHCAL_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + MONTHCAL_INFO *infoPtr; + + /* allocate memory for info structure */ + infoPtr = (MONTHCAL_INFO *)COMCTL32_Alloc (sizeof(MONTHCAL_INFO)); + wndPtr->wExtra[0] = (DWORD)infoPtr; + + if (infoPtr == NULL) { + ERR (monthcal, "could not allocate info memory!\n"); + return 0; + } + + if ((MONTHCAL_INFO*)wndPtr->wExtra[0] != infoPtr) { + ERR (monthcal, "pointer assignment error!\n"); + return 0; + } + + /* initialize info structure */ + + + + return 0; +} + + +static LRESULT +MONTHCAL_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam) +{ + MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(wndPtr); + + + + + + + /* free ipaddress info data */ + COMCTL32_Free (infoPtr); + + return 0; +} + + + + +LRESULT WINAPI +MONTHCAL_WindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + + switch (uMsg) + { + + + case WM_CREATE: + return MONTHCAL_Create (wndPtr, wParam, lParam); + + case WM_DESTROY: + return MONTHCAL_Destroy (wndPtr, wParam, lParam); + + default: + if (uMsg >= WM_USER) + ERR (monthcal, "unknown msg %04x wp=%08x lp=%08lx\n", + uMsg, wParam, lParam); + return DefWindowProc32A (hwnd, uMsg, wParam, lParam); + } + return 0; +} + + +VOID +MONTHCAL_Register (VOID) +{ + WNDCLASS32A wndClass; + + if (GlobalFindAtom32A (MONTHCAL_CLASS32A)) return; + + ZeroMemory (&wndClass, sizeof(WNDCLASS32A)); + wndClass.style = CS_GLOBALCLASS; + wndClass.lpfnWndProc = (WNDPROC32)MONTHCAL_WindowProc; + wndClass.cbClsExtra = 0; + wndClass.cbWndExtra = sizeof(MONTHCAL_INFO *); + wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A); + wndClass.hbrBackground = (HBRUSH32)(COLOR_WINDOW + 1); + wndClass.lpszClassName = MONTHCAL_CLASS32A; + + RegisterClass32A (&wndClass); +} + + +VOID +MONTHCAL_Unregister (VOID) +{ + if (GlobalFindAtom32A (MONTHCAL_CLASS32A)) + UnregisterClass32A (MONTHCAL_CLASS32A, (HINSTANCE32)NULL); +} + diff --git a/include/commctrl.h b/include/commctrl.h index 76f15ef7d7a..74e17efbb1b 100644 --- a/include/commctrl.h +++ b/include/commctrl.h @@ -1889,6 +1889,17 @@ typedef struct tagTVHITTESTINFO { #define LVNI_TOLEFT 0x0400 #define LVNI_TORIGHT 0x0800 +#define LVHT_NOWHERE 0x0001 +#define LVHT_ONITEMICON 0x0002 +#define LVHT_ONITEMLABEL 0x0004 +#define LVHT_ONITEMSTATEICON 0x0008 +#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON) + +#define LVHT_ABOVE 0x0008 +#define LVHT_BELOW 0x0010 +#define LVHT_TORIGHT 0x0020 +#define LVHT_TOLEFT 0x0040 + #define LVM_FIRST 0x1000 #define LVM_GETBKCOLOR (LVM_FIRST+0) #define LVM_SETBKCOLOR (LVM_FIRST+1) @@ -2132,6 +2143,18 @@ typedef struct tagLVDISPINFOW #define LV_DISPINFO NMLVDISPINFO +typedef struct tagLVHITTESTINFO +{ + POINT32 pt; + UINT32 flags; + INT32 iItem; + INT32 iSubItem; +} LVHITTESTINFO, *LPLVHITTESTINFO; + +#define LV_HITTESTINFO LVHITTESTINFO +#define _LV_HITTESTINFO tagLVHITTESTINFO +#define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem) + typedef INT32 (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM); #define ListView_SetBkColor(hwnd,clrBk) \ @@ -2147,6 +2170,8 @@ typedef INT32 (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM); #define ListView_GetItem32W(hwnd,pitem) \ (BOOL32)SendMessage32W((hwnd),LVM_GETITEM32W,0,(LPARAM)(LVITEM32W *)(pitem)) #define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem) +#define ListView_HitTest(hwnd,pinfo) \ + (INT32)SendMessage32A((hwnd),LVMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo)) #define ListView_InsertItem32A(hwnd,pitem) \ (INT32)SendMessage32A((hwnd),LVM_INSERTITEM32A,0,(LPARAM)(const LVITEM32A *)(pitem)) #define ListView_InsertItem32W(hwnd,pitem) \ @@ -2356,6 +2381,24 @@ typedef struct tagNMIPADDRESS #define NFS_ALL 0x0010 +/************************************************************************** + * Month calendar control + */ + +#define MONTHCAL_CLASS32A "SysMonthCal32" +#define MONTHCAL_CLASS32W L"SysMonthCal32" +#define MONTHCAL_CLASS WINELIB_NAME_AW(MONTHCAL_CLASS) + + +/************************************************************************** + * Date and time picker control + */ + +#define DATETIMEPICK_CLASS32A "SysDateTimePick32" +#define DATETIMEPICK_CLASS32W L"SysDateTimePick32" +#define DATETIMEPICK_CLASS WINELIB_NAME_AW(DATETIMEPICK_CLASS) + + /************************************************************************** * UNDOCUMENTED functions */ diff --git a/include/datetime.h b/include/datetime.h new file mode 100644 index 00000000000..d8ee1a3ff7c --- /dev/null +++ b/include/datetime.h @@ -0,0 +1,21 @@ +/* + * Date and time picker class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_DATETIME_H +#define __WINE_DATETIME_H + +typedef struct tagDATETIME_INFO +{ + DWORD dwDummy; /* just to keep the compiler happy ;-) */ + + +} DATETIME_INFO, *LPDATETIME_INFO; + + +extern VOID DATETIME_Register (VOID); +extern VOID DATETIME_Unregister (VOID); + +#endif /* __WINE_DATETIME_H */ diff --git a/include/debug.h b/include/debug.h index 346a07bbef8..166e2edde9c 100644 --- a/include/debug.h +++ b/include/debug.h @@ -31,128 +31,130 @@ #define dbch_console 23 #define dbch_crtdll 24 #define dbch_cursor 25 -#define dbch_dc 26 -#define dbch_dde 27 -#define dbch_ddeml 28 -#define dbch_ddraw 29 -#define dbch_debug 30 -#define dbch_dialog 31 -#define dbch_dinput 32 -#define dbch_dll 33 -#define dbch_dosfs 34 -#define dbch_dosmem 35 -#define dbch_dplay 36 -#define dbch_driver 37 -#define dbch_dsound 38 -#define dbch_edit 39 -#define dbch_event 40 -#define dbch_exec 41 -#define dbch_file 42 -#define dbch_fixup 43 -#define dbch_font 44 -#define dbch_gdi 45 -#define dbch_global 46 -#define dbch_graphics 47 -#define dbch_header 48 -#define dbch_heap 49 -#define dbch_hook 50 -#define dbch_hotkey 51 -#define dbch_icon 52 -#define dbch_imagehlp 53 -#define dbch_imagelist 54 -#define dbch_imm 55 -#define dbch_int 56 -#define dbch_int10 57 -#define dbch_int16 58 -#define dbch_int17 59 -#define dbch_int19 60 -#define dbch_int21 61 -#define dbch_int31 62 -#define dbch_io 63 -#define dbch_ipaddress 64 -#define dbch_key 65 -#define dbch_keyboard 66 -#define dbch_ldt 67 -#define dbch_listbox 68 -#define dbch_listview 69 -#define dbch_local 70 -#define dbch_mci 71 -#define dbch_mcianim 72 -#define dbch_mciwave 73 -#define dbch_mdi 74 -#define dbch_menu 75 -#define dbch_message 76 -#define dbch_metafile 77 -#define dbch_midi 78 -#define dbch_mmaux 79 -#define dbch_mmio 80 -#define dbch_mmsys 81 -#define dbch_mmtime 82 -#define dbch_module 83 -#define dbch_mpr 84 -#define dbch_msacm 85 -#define dbch_msg 86 -#define dbch_nativefont 87 -#define dbch_nonclient 88 -#define dbch_ntdll 89 -#define dbch_ole 90 -#define dbch_pager 91 -#define dbch_palette 92 -#define dbch_pidl 93 -#define dbch_print 94 -#define dbch_process 95 -#define dbch_profile 96 -#define dbch_progress 97 -#define dbch_prop 98 -#define dbch_psapi 99 -#define dbch_psdrv 100 -#define dbch_rebar 101 -#define dbch_reg 102 -#define dbch_region 103 -#define dbch_relay 104 -#define dbch_resource 105 -#define dbch_s 106 -#define dbch_scroll 107 -#define dbch_security 108 -#define dbch_segment 109 -#define dbch_selector 110 -#define dbch_sem 111 -#define dbch_sendmsg 112 -#define dbch_shell 113 -#define dbch_shm 114 -#define dbch_snoop 115 -#define dbch_sound 116 -#define dbch_static 117 -#define dbch_statusbar 118 -#define dbch_stress 119 -#define dbch_string 120 -#define dbch_syscolor 121 -#define dbch_system 122 -#define dbch_tab 123 -#define dbch_task 124 -#define dbch_text 125 -#define dbch_thread 126 -#define dbch_thunk 127 -#define dbch_timer 128 -#define dbch_toolbar 129 -#define dbch_toolhelp 130 -#define dbch_tooltips 131 -#define dbch_trackbar 132 -#define dbch_treeview 133 -#define dbch_tweak 134 -#define dbch_uitools 135 -#define dbch_updown 136 -#define dbch_ver 137 -#define dbch_virtual 138 -#define dbch_vxd 139 -#define dbch_win 140 -#define dbch_win16drv 141 -#define dbch_win32 142 -#define dbch_wing 143 -#define dbch_winsock 144 -#define dbch_wnet 145 -#define dbch_x11 146 -#define dbch_x11drv 147 +#define dbch_datetime 26 +#define dbch_dc 27 +#define dbch_dde 28 +#define dbch_ddeml 29 +#define dbch_ddraw 30 +#define dbch_debug 31 +#define dbch_dialog 32 +#define dbch_dinput 33 +#define dbch_dll 34 +#define dbch_dosfs 35 +#define dbch_dosmem 36 +#define dbch_dplay 37 +#define dbch_driver 38 +#define dbch_dsound 39 +#define dbch_edit 40 +#define dbch_event 41 +#define dbch_exec 42 +#define dbch_file 43 +#define dbch_fixup 44 +#define dbch_font 45 +#define dbch_gdi 46 +#define dbch_global 47 +#define dbch_graphics 48 +#define dbch_header 49 +#define dbch_heap 50 +#define dbch_hook 51 +#define dbch_hotkey 52 +#define dbch_icon 53 +#define dbch_imagehlp 54 +#define dbch_imagelist 55 +#define dbch_imm 56 +#define dbch_int 57 +#define dbch_int10 58 +#define dbch_int16 59 +#define dbch_int17 60 +#define dbch_int19 61 +#define dbch_int21 62 +#define dbch_int31 63 +#define dbch_io 64 +#define dbch_ipaddress 65 +#define dbch_key 66 +#define dbch_keyboard 67 +#define dbch_ldt 68 +#define dbch_listbox 69 +#define dbch_listview 70 +#define dbch_local 71 +#define dbch_mci 72 +#define dbch_mcianim 73 +#define dbch_mciwave 74 +#define dbch_mdi 75 +#define dbch_menu 76 +#define dbch_message 77 +#define dbch_metafile 78 +#define dbch_midi 79 +#define dbch_mmaux 80 +#define dbch_mmio 81 +#define dbch_mmsys 82 +#define dbch_mmtime 83 +#define dbch_module 84 +#define dbch_monthcal 85 +#define dbch_mpr 86 +#define dbch_msacm 87 +#define dbch_msg 88 +#define dbch_nativefont 89 +#define dbch_nonclient 90 +#define dbch_ntdll 91 +#define dbch_ole 92 +#define dbch_pager 93 +#define dbch_palette 94 +#define dbch_pidl 95 +#define dbch_print 96 +#define dbch_process 97 +#define dbch_profile 98 +#define dbch_progress 99 +#define dbch_prop 100 +#define dbch_psapi 101 +#define dbch_psdrv 102 +#define dbch_rebar 103 +#define dbch_reg 104 +#define dbch_region 105 +#define dbch_relay 106 +#define dbch_resource 107 +#define dbch_s 108 +#define dbch_scroll 109 +#define dbch_security 110 +#define dbch_segment 111 +#define dbch_selector 112 +#define dbch_sem 113 +#define dbch_sendmsg 114 +#define dbch_shell 115 +#define dbch_shm 116 +#define dbch_snoop 117 +#define dbch_sound 118 +#define dbch_static 119 +#define dbch_statusbar 120 +#define dbch_stress 121 +#define dbch_string 122 +#define dbch_syscolor 123 +#define dbch_system 124 +#define dbch_tab 125 +#define dbch_task 126 +#define dbch_text 127 +#define dbch_thread 128 +#define dbch_thunk 129 +#define dbch_timer 130 +#define dbch_toolbar 131 +#define dbch_toolhelp 132 +#define dbch_tooltips 133 +#define dbch_trackbar 134 +#define dbch_treeview 135 +#define dbch_tweak 136 +#define dbch_uitools 137 +#define dbch_updown 138 +#define dbch_ver 139 +#define dbch_virtual 140 +#define dbch_vxd 141 +#define dbch_win 142 +#define dbch_win16drv 143 +#define dbch_win32 144 +#define dbch_wing 145 +#define dbch_winsock 146 +#define dbch_wnet 147 +#define dbch_x11 148 +#define dbch_x11drv 149 /* Definitions for classes identifiers */ #define dbcl_fixme 0 #define dbcl_err 1 diff --git a/include/debugdefs.h b/include/debugdefs.h index 42e6c924a47..964e2a9ccd4 100644 --- a/include/debugdefs.h +++ b/include/debugdefs.h @@ -4,7 +4,7 @@ #include "debugtools.h" #endif -#define DEBUG_CHANNEL_COUNT 148 +#define DEBUG_CHANNEL_COUNT 150 #ifdef DEBUG_RUNTIME short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { {1, 1, 0, 0}, @@ -155,6 +155,8 @@ short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { {1, 1, 0, 0}, {1, 1, 0, 0}, {1, 1, 0, 0}, +{1, 1, 0, 0}, +{1, 1, 0, 0}, }; const char* debug_ch_name[] = { "1", @@ -183,6 +185,7 @@ const char* debug_ch_name[] = { "console", "crtdll", "cursor", +"datetime", "dc", "dde", "ddeml", @@ -241,6 +244,7 @@ const char* debug_ch_name[] = { "mmsys", "mmtime", "module", +"monthcal", "mpr", "msacm", "msg", diff --git a/include/monthcal.h b/include/monthcal.h new file mode 100644 index 00000000000..fbc501a9932 --- /dev/null +++ b/include/monthcal.h @@ -0,0 +1,21 @@ +/* + * Month calendar class extra info + * + * Copyright 1998 Eric Kohl + */ + +#ifndef __WINE_MONTHCAL_H +#define __WINE_MONTHCAL_H + +typedef struct tagMONTHCAL_INFO +{ + DWORD dwDummy; /* just to keep the compiler happy ;-) */ + + +} MONTHCAL_INFO, *LPMONTHCAL_INFO; + + +extern VOID MONTHCAL_Register (VOID); +extern VOID MONTHCAL_Unregister (VOID); + +#endif /* __WINE_MONTHCAL_H */