Commit 37d68ef5 authored by Eric Kohl's avatar Eric Kohl Committed by Alexandre Julliard

Added IPAddress and NativeFont controls.

parent 978137dc
...@@ -13,7 +13,9 @@ C_SRCS = \ ...@@ -13,7 +13,9 @@ C_SRCS = \
header.c \ header.c \
hotkey.c \ hotkey.c \
imagelist.c \ imagelist.c \
ipaddress.c \
listview.c \ listview.c \
nativefont.c \
pager.c \ pager.c \
progress.c \ progress.c \
rebar.c \ rebar.c \
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
#include "comboex.h" #include "comboex.h"
#include "header.h" #include "header.h"
#include "hotkey.h" #include "hotkey.h"
#include "ipaddress.h"
#include "listview.h" #include "listview.h"
#include "nativefont.h"
#include "pager.h" #include "pager.h"
#include "progress.h" #include "progress.h"
#include "rebar.h" #include "rebar.h"
...@@ -28,13 +30,17 @@ ...@@ -28,13 +30,17 @@
#include "winerror.h" #include "winerror.h"
HANDLE32 COMCTL32_hHeap = (HANDLE32)NULL;
DWORD COMCTL32_dwProcessesAttached = 0;
/*********************************************************************** /***********************************************************************
* ComCtl32LibMain [Internal] Initializes the internal 'COMCTL32.DLL'. * ComCtl32LibMain [Internal] Initializes the internal 'COMCTL32.DLL'.
* *
* PARAMS * PARAMS
* hinstDLL [I] handle to the 'dlls' instance * hinstDLL [I] handle to the 'dlls' instance
* fdwReason [I] * fdwReason [I]
* lpvReserved [I] * lpvReserved [I] reserverd, must be NULL
* *
* RETURNS * RETURNS
* Success: TRUE * Success: TRUE
...@@ -48,18 +54,43 @@ ComCtl32LibMain (HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved) ...@@ -48,18 +54,43 @@ ComCtl32LibMain (HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
switch (fdwReason) { switch (fdwReason) {
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
ANIMATE_Register (); if (COMCTL32_dwProcessesAttached == 0) {
HEADER_Register (); /* create private heap */
HOTKEY_Register (); COMCTL32_hHeap = HeapCreate (0, 1, 0x40000000);
LISTVIEW_Register (); TRACE (commctrl, "Heap created: 0x%x\n", COMCTL32_hHeap);
PROGRESS_Register ();
STATUS_Register (); /* register all Win95 common control classes */
TAB_Register (); ANIMATE_Register ();
TOOLBAR_Register (); HEADER_Register ();
TOOLTIPS_Register (); HOTKEY_Register ();
TRACKBAR_Register (); LISTVIEW_Register ();
TREEVIEW_Register (); PROGRESS_Register ();
UPDOWN_Register (); STATUS_Register ();
TAB_Register ();
TOOLBAR_Register ();
TOOLTIPS_Register ();
TRACKBAR_Register ();
TREEVIEW_Register ();
UPDOWN_Register ();
}
COMCTL32_dwProcessesAttached++;
break;
case DLL_PROCESS_DETACH:
COMCTL32_dwProcessesAttached--;
if (COMCTL32_dwProcessesAttached == 0) {
/* unregister all common control classes */
IPADDRESS_Unregister ();
NATIVEFONT_Unregister ();
TOOLTIPS_Unregister ();
/* destroy private heap */
HeapDestroy (COMCTL32_hHeap);
TRACE (commctrl, "Heap destroyed: 0x%x\n", COMCTL32_hHeap);
COMCTL32_hHeap = (HANDLE32)NULL;
}
break; break;
} }
...@@ -117,7 +148,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu, ...@@ -117,7 +148,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu,
CHAR szText[256]; CHAR szText[256];
if (!LoadString32A (hInst, uMenuID, szText, 256)) if (!LoadString32A (hInst, uMenuID, szText, 256))
szText[0] = 0; szText[0] = '\0';
SendMessage32A (hwndStatus, SB_SETTEXT32A, SendMessage32A (hwndStatus, SB_SETTEXT32A,
255 | SBT_NOBORDERS, (LPARAM)szText); 255 | SBT_NOBORDERS, (LPARAM)szText);
...@@ -127,7 +158,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu, ...@@ -127,7 +158,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu,
break; break;
default: default:
WARN (commctrl, "Invalid Message!\n"); FIXME (commctrl, "Invalid Message!\n");
break; break;
} }
} }
...@@ -291,7 +322,7 @@ DrawStatusText32A (HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style) ...@@ -291,7 +322,7 @@ DrawStatusText32A (HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style)
* hdc [I] handle to the window's display context * hdc [I] handle to the window's display context
* lprc [I] pointer to a rectangle * lprc [I] pointer to a rectangle
* text [I] pointer to the text * text [I] pointer to the text
* style [I] * style [I]
* *
* RETURNS * RETURNS
* No return value. * No return value.
...@@ -336,8 +367,8 @@ CreateStatusWindow32A (INT32 style, LPCSTR text, HWND32 parent, UINT32 wid) ...@@ -336,8 +367,8 @@ CreateStatusWindow32A (INT32 style, LPCSTR text, HWND32 parent, UINT32 wid)
* PARAMS * PARAMS
* style [I] * style [I]
* text [I] * text [I]
* parent [I] * parent [I] handle to the parent window
* wid [I] * wid [I] control id of the status bar
* *
* RETURNS * RETURNS
* Success: handle to the control * Success: handle to the control
...@@ -440,10 +471,12 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) ...@@ -440,10 +471,12 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
INT32 cCount; INT32 cCount;
DWORD dwMask; DWORD dwMask;
TRACE(commctrl,"\n"); if (!lpInitCtrls)
return FALSE;
if (lpInitCtrls == NULL) return FALSE; if (lpInitCtrls->dwSize != sizeof(INITCOMMONCONTROLSEX))
if (lpInitCtrls->dwSize < sizeof(INITCOMMONCONTROLSEX)) return FALSE; return FALSE;
TRACE(commctrl,"(0x%08lx)\n", lpInitCtrls->dwICC);
for (cCount = 0; cCount < 32; cCount++) { for (cCount = 0; cCount < 32; cCount++) {
dwMask = 1 << cCount; dwMask = 1 << cCount;
...@@ -465,8 +498,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) ...@@ -465,8 +498,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
/* advanced classes - not included in Win95 */ /* advanced classes - not included in Win95 */
case ICC_DATE_CLASSES: case ICC_DATE_CLASSES:
FIXME (commctrl, "No month calendar class implemented!\n"); FIXME (commctrl, "No month calendar class implemented!\n");
FIXME (commctrl, "No date picker class implemented!\n"); FIXME (commctrl, "No date and time picker class implemented!\n");
FIXME (commctrl, "No time picker class implemented!\n");
break; break;
case ICC_USEREX_CLASSES: case ICC_USEREX_CLASSES:
...@@ -478,7 +510,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) ...@@ -478,7 +510,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break; break;
case ICC_INTERNET_CLASSES: case ICC_INTERNET_CLASSES:
FIXME (commctrl, "No IPAddress class implemented!\n"); IPADDRESS_Register ();
break; break;
case ICC_PAGESCROLLER_CLASS: case ICC_PAGESCROLLER_CLASS:
...@@ -486,11 +518,11 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls) ...@@ -486,11 +518,11 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break; break;
case ICC_NATIVEFNTCTL_CLASS: case ICC_NATIVEFNTCTL_CLASS:
FIXME (commctrl, "No native font class implemented!\n"); NATIVEFONT_Register ();
break; break;
default: default:
WARN (commctrl, "Unknown class! dwICC=0x%lX\n", dwMask); FIXME (commctrl, "Unknown class! dwICC=0x%lX\n", dwMask);
break; break;
} }
} }
......
/*
* IP Address 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 <ekohl@abo.rhein-zeitung.de>
*
* TODO:
* - All messages.
* - All notifications.
*
*/
#include "windows.h"
#include "commctrl.h"
#include "ipaddress.h"
#include "win.h"
#include "debug.h"
#define IPADDRESS_GetInfoPtr(wndPtr) ((IPADDRESS_INFO *)wndPtr->wExtra[0])
static LRESULT
IPADDRESS_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
IPADDRESS_INFO *infoPtr;
/* allocate memory for info structure */
infoPtr = (IPADDRESS_INFO *)COMCTL32_Alloc (sizeof(IPADDRESS_INFO));
wndPtr->wExtra[0] = (DWORD)infoPtr;
if (infoPtr == NULL) {
ERR (listview, "could not allocate info memory!\n");
return 0;
}
if ((IPADDRESS_INFO*)wndPtr->wExtra[0] != infoPtr) {
ERR (listview, "pointer assignment error!\n");
return 0;
}
/* initialize info structure */
return 0;
}
static LRESULT
IPADDRESS_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr);
/* free ipaddress info data */
COMCTL32_Free (infoPtr);
return 0;
}
LRESULT WINAPI
IPADDRESS_WindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
{
WND *wndPtr = WIN_FindWndPtr(hwnd);
switch (uMsg)
{
// case IPM_CLEARADDRESS:
// case IPM_GETADDRESS:
// case IPM_ISBLANK:
// case IPM_SETADDRESS:
// case IPM_SETFOCUS:
// case IPM_SETRANGE:
case WM_CREATE:
return IPADDRESS_Create (wndPtr, wParam, lParam);
case WM_DESTROY:
return IPADDRESS_Destroy (wndPtr, wParam, lParam);
default:
if (uMsg >= WM_USER)
ERR (ipaddress, "unknown msg %04x wp=%08x lp=%08lx\n",
uMsg, wParam, lParam);
return DefWindowProc32A (hwnd, uMsg, wParam, lParam);
}
return 0;
}
VOID
IPADDRESS_Register (VOID)
{
WNDCLASS32A wndClass;
if (GlobalFindAtom32A (WC_IPADDRESS32A)) return;
ZeroMemory (&wndClass, sizeof(WNDCLASS32A));
wndClass.style = CS_GLOBALCLASS;
wndClass.lpfnWndProc = (WNDPROC32)IPADDRESS_WindowProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = sizeof(IPADDRESS_INFO *);
wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A);
wndClass.hbrBackground = (HBRUSH32)(COLOR_WINDOW + 1);
wndClass.lpszClassName = WC_IPADDRESS32A;
RegisterClass32A (&wndClass);
}
VOID
IPADDRESS_Unregister (VOID)
{
if (GlobalFindAtom32A (WC_IPADDRESS32A))
UnregisterClass32A (WC_IPADDRESS32A, (HINSTANCE32)NULL);
}
/*
* Native Font 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 <ekohl@abo.rhein-zeitung.de>
*
* TODO:
* - All messages.
* - All notifications.
*/
#include "windows.h"
#include "commctrl.h"
#include "nativefont.h"
#include "win.h"
#include "debug.h"
#define NATIVEFONT_GetInfoPtr(wndPtr) ((NATIVEFONT_INFO *)wndPtr->wExtra[0])
static LRESULT
NATIVEFONT_Create (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
NATIVEFONT_INFO *infoPtr;
/* allocate memory for info structure */
infoPtr = (NATIVEFONT_INFO *)COMCTL32_Alloc (sizeof(NATIVEFONT_INFO));
wndPtr->wExtra[0] = (DWORD)infoPtr;
if (infoPtr == NULL) {
ERR (listview, "could not allocate info memory!\n");
return 0;
}
if ((NATIVEFONT_INFO*)wndPtr->wExtra[0] != infoPtr) {
ERR (listview, "pointer assignment error!\n");
return 0;
}
/* initialize info structure */
return 0;
}
static LRESULT
NATIVEFONT_Destroy (WND *wndPtr, WPARAM32 wParam, LPARAM lParam)
{
NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr(wndPtr);
/* free comboex info data */
COMCTL32_Free (infoPtr);
return 0;
}
LRESULT WINAPI
NATIVEFONT_WindowProc (HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam)
{
WND *wndPtr = WIN_FindWndPtr(hwnd);
switch (uMsg)
{
case WM_CREATE:
return NATIVEFONT_Create (wndPtr, wParam, lParam);
case WM_DESTROY:
return NATIVEFONT_Destroy (wndPtr, wParam, lParam);
default:
ERR (nativefont, "unknown msg %04x wp=%08x lp=%08lx\n",
uMsg, wParam, lParam);
return DefWindowProc32A (hwnd, uMsg, wParam, lParam);
}
return 0;
}
VOID
NATIVEFONT_Register (VOID)
{
WNDCLASS32A wndClass;
if (GlobalFindAtom32A (WC_NATIVEFONTCTL32A)) return;
ZeroMemory (&wndClass, sizeof(WNDCLASS32A));
wndClass.style = CS_GLOBALCLASS;
wndClass.lpfnWndProc = (WNDPROC32)NATIVEFONT_WindowProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = sizeof(NATIVEFONT_INFO *);
wndClass.hCursor = LoadCursor32A (0, IDC_ARROW32A);
wndClass.hbrBackground = (HBRUSH32)(COLOR_WINDOW + 1);
wndClass.lpszClassName = WC_NATIVEFONTCTL32A;
RegisterClass32A (&wndClass);
}
VOID
NATIVEFONT_Unregister (VOID)
{
if (GlobalFindAtom32A (WC_NATIVEFONTCTL32A))
UnregisterClass32A (WC_NATIVEFONTCTL32A, (HINSTANCE32)NULL);
}
...@@ -64,87 +64,89 @@ ...@@ -64,87 +64,89 @@
#define dbch_int10 56 #define dbch_int10 56
#define dbch_int21 57 #define dbch_int21 57
#define dbch_int31 58 #define dbch_int31 58
#define dbch_key 59 #define dbch_ipaddress 59
#define dbch_keyboard 60 #define dbch_key 60
#define dbch_ldt 61 #define dbch_keyboard 61
#define dbch_listbox 62 #define dbch_ldt 62
#define dbch_listview 63 #define dbch_listbox 63
#define dbch_local 64 #define dbch_listview 64
#define dbch_mci 65 #define dbch_local 65
#define dbch_mcianim 66 #define dbch_mci 66
#define dbch_mciwave 67 #define dbch_mcianim 67
#define dbch_mdi 68 #define dbch_mciwave 68
#define dbch_menu 69 #define dbch_mdi 69
#define dbch_message 70 #define dbch_menu 70
#define dbch_metafile 71 #define dbch_message 71
#define dbch_midi 72 #define dbch_metafile 72
#define dbch_mmaux 73 #define dbch_midi 73
#define dbch_mmio 74 #define dbch_mmaux 74
#define dbch_mmsys 75 #define dbch_mmio 75
#define dbch_mmtime 76 #define dbch_mmsys 76
#define dbch_module 77 #define dbch_mmtime 77
#define dbch_mpr 78 #define dbch_module 78
#define dbch_msg 79 #define dbch_mpr 79
#define dbch_nonclient 80 #define dbch_msg 80
#define dbch_ntdll 81 #define dbch_nativefont 81
#define dbch_ole 82 #define dbch_nonclient 82
#define dbch_pager 83 #define dbch_ntdll 83
#define dbch_palette 84 #define dbch_ole 84
#define dbch_pidl 85 #define dbch_pager 85
#define dbch_print 86 #define dbch_palette 86
#define dbch_process 87 #define dbch_pidl 87
#define dbch_profile 88 #define dbch_print 88
#define dbch_progress 89 #define dbch_process 89
#define dbch_prop 90 #define dbch_profile 90
#define dbch_psapi 91 #define dbch_progress 91
#define dbch_psdrv 92 #define dbch_prop 92
#define dbch_rebar 93 #define dbch_psapi 93
#define dbch_reg 94 #define dbch_psdrv 94
#define dbch_region 95 #define dbch_rebar 95
#define dbch_relay 96 #define dbch_reg 96
#define dbch_resource 97 #define dbch_region 97
#define dbch_s 98 #define dbch_relay 98
#define dbch_scroll 99 #define dbch_resource 99
#define dbch_security 100 #define dbch_s 100
#define dbch_segment 101 #define dbch_scroll 101
#define dbch_selector 102 #define dbch_security 102
#define dbch_sem 103 #define dbch_segment 103
#define dbch_sendmsg 104 #define dbch_selector 104
#define dbch_shell 105 #define dbch_sem 105
#define dbch_shm 106 #define dbch_sendmsg 106
#define dbch_snoop 107 #define dbch_shell 107
#define dbch_sound 108 #define dbch_shm 108
#define dbch_static 109 #define dbch_snoop 109
#define dbch_statusbar 110 #define dbch_sound 110
#define dbch_stress 111 #define dbch_static 111
#define dbch_string 112 #define dbch_statusbar 112
#define dbch_syscolor 113 #define dbch_stress 113
#define dbch_system 114 #define dbch_string 114
#define dbch_tab 115 #define dbch_syscolor 115
#define dbch_task 116 #define dbch_system 116
#define dbch_text 117 #define dbch_tab 117
#define dbch_thread 118 #define dbch_task 118
#define dbch_thunk 119 #define dbch_text 119
#define dbch_timer 120 #define dbch_thread 120
#define dbch_toolbar 121 #define dbch_thunk 121
#define dbch_toolhelp 122 #define dbch_timer 122
#define dbch_tooltips 123 #define dbch_toolbar 123
#define dbch_trackbar 124 #define dbch_toolhelp 124
#define dbch_treeview 125 #define dbch_tooltips 125
#define dbch_tweak 126 #define dbch_trackbar 126
#define dbch_uitools 127 #define dbch_treeview 127
#define dbch_updown 128 #define dbch_tweak 128
#define dbch_ver 129 #define dbch_uitools 129
#define dbch_virtual 130 #define dbch_updown 130
#define dbch_vxd 131 #define dbch_ver 131
#define dbch_win 132 #define dbch_virtual 132
#define dbch_win16drv 133 #define dbch_vxd 133
#define dbch_win32 134 #define dbch_win 134
#define dbch_wing 135 #define dbch_win16drv 135
#define dbch_winsock 136 #define dbch_win32 136
#define dbch_wnet 137 #define dbch_wing 137
#define dbch_x11 138 #define dbch_winsock 138
#define dbch_x11drv 139 #define dbch_wnet 139
#define dbch_x11 140
#define dbch_x11drv 141
/* Definitions for classes identifiers */ /* Definitions for classes identifiers */
#define dbcl_fixme 0 #define dbcl_fixme 0
#define dbcl_err 1 #define dbcl_err 1
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include "debugtools.h" #include "debugtools.h"
#endif #endif
#define DEBUG_CHANNEL_COUNT 140 #define DEBUG_CHANNEL_COUNT 142
#ifdef DEBUG_RUNTIME #ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0}, {1, 1, 0, 0},
...@@ -147,6 +147,8 @@ short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { ...@@ -147,6 +147,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}, {1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
}; };
const char* debug_ch_name[] = { const char* debug_ch_name[] = {
"1", "1",
...@@ -208,6 +210,7 @@ const char* debug_ch_name[] = { ...@@ -208,6 +210,7 @@ const char* debug_ch_name[] = {
"int10", "int10",
"int21", "int21",
"int31", "int31",
"ipaddress",
"key", "key",
"keyboard", "keyboard",
"ldt", "ldt",
...@@ -229,6 +232,7 @@ const char* debug_ch_name[] = { ...@@ -229,6 +232,7 @@ const char* debug_ch_name[] = {
"module", "module",
"mpr", "mpr",
"msg", "msg",
"nativefont",
"nonclient", "nonclient",
"ntdll", "ntdll",
"ole", "ole",
......
/*
* IP Address class extra info
*
* Copyright 1998 Eric Kohl
*/
#ifndef __WINE_IPADDRESS_H
#define __WINE_IPADDRESS_H
typedef struct tagIPADDRESS_INFO
{
DWORD dwDummy; /* just to keep the compiler happy ;-) */
} IPADDRESS_INFO, *LPIPADDRESS_INFO;
extern VOID IPADDRESS_Register (VOID);
extern VOID IPADDRESS_Register (VOID);
#endif /* __WINE_IPADDRESS_H */
/*
* Native font class extra info
*
* Copyright 1998 Eric Kohl
*/
#ifndef __WINE_NATIVEFONT_H
#define __WINE_NATIVEFONT_H
typedef struct tagNATIVEFONT_INFO
{
DWORD dwDummy; /* just to keep the compiler happy ;-) */
} NATIVEFONT_INFO;
extern VOID NATIVEFONT_Register (VOID);
extern VOID NATIVEFONT_Unregister (VOID);
#endif /* __WINE_NATIVEFONT_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment