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 = \
header.c \
hotkey.c \
imagelist.c \
ipaddress.c \
listview.c \
nativefont.c \
pager.c \
progress.c \
rebar.c \
......
......@@ -13,7 +13,9 @@
#include "comboex.h"
#include "header.h"
#include "hotkey.h"
#include "ipaddress.h"
#include "listview.h"
#include "nativefont.h"
#include "pager.h"
#include "progress.h"
#include "rebar.h"
......@@ -28,13 +30,17 @@
#include "winerror.h"
HANDLE32 COMCTL32_hHeap = (HANDLE32)NULL;
DWORD COMCTL32_dwProcessesAttached = 0;
/***********************************************************************
* ComCtl32LibMain [Internal] Initializes the internal 'COMCTL32.DLL'.
*
* PARAMS
* hinstDLL [I] handle to the 'dlls' instance
* fdwReason [I]
* lpvReserved [I]
* lpvReserved [I] reserverd, must be NULL
*
* RETURNS
* Success: TRUE
......@@ -48,18 +54,43 @@ ComCtl32LibMain (HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
ANIMATE_Register ();
HEADER_Register ();
HOTKEY_Register ();
LISTVIEW_Register ();
PROGRESS_Register ();
STATUS_Register ();
TAB_Register ();
TOOLBAR_Register ();
TOOLTIPS_Register ();
TRACKBAR_Register ();
TREEVIEW_Register ();
UPDOWN_Register ();
if (COMCTL32_dwProcessesAttached == 0) {
/* create private heap */
COMCTL32_hHeap = HeapCreate (0, 1, 0x40000000);
TRACE (commctrl, "Heap created: 0x%x\n", COMCTL32_hHeap);
/* register all Win95 common control classes */
ANIMATE_Register ();
HEADER_Register ();
HOTKEY_Register ();
LISTVIEW_Register ();
PROGRESS_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;
}
......@@ -117,7 +148,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu,
CHAR szText[256];
if (!LoadString32A (hInst, uMenuID, szText, 256))
szText[0] = 0;
szText[0] = '\0';
SendMessage32A (hwndStatus, SB_SETTEXT32A,
255 | SBT_NOBORDERS, (LPARAM)szText);
......@@ -127,7 +158,7 @@ MenuHelp (UINT32 uMsg, WPARAM32 wParam, LPARAM lParam, HMENU32 hMainMenu,
break;
default:
WARN (commctrl, "Invalid Message!\n");
FIXME (commctrl, "Invalid Message!\n");
break;
}
}
......@@ -291,7 +322,7 @@ DrawStatusText32A (HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style)
* hdc [I] handle to the window's display context
* lprc [I] pointer to a rectangle
* text [I] pointer to the text
* style [I]
* style [I]
*
* RETURNS
* No return value.
......@@ -336,8 +367,8 @@ CreateStatusWindow32A (INT32 style, LPCSTR text, HWND32 parent, UINT32 wid)
* PARAMS
* style [I]
* text [I]
* parent [I]
* wid [I]
* parent [I] handle to the parent window
* wid [I] control id of the status bar
*
* RETURNS
* Success: handle to the control
......@@ -440,10 +471,12 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
INT32 cCount;
DWORD dwMask;
TRACE(commctrl,"\n");
if (lpInitCtrls == NULL) return FALSE;
if (lpInitCtrls->dwSize < sizeof(INITCOMMONCONTROLSEX)) return FALSE;
if (!lpInitCtrls)
return FALSE;
if (lpInitCtrls->dwSize != sizeof(INITCOMMONCONTROLSEX))
return FALSE;
TRACE(commctrl,"(0x%08lx)\n", lpInitCtrls->dwICC);
for (cCount = 0; cCount < 32; cCount++) {
dwMask = 1 << cCount;
......@@ -465,8 +498,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
/* advanced classes - not included in Win95 */
case ICC_DATE_CLASSES:
FIXME (commctrl, "No month calendar class implemented!\n");
FIXME (commctrl, "No date picker class implemented!\n");
FIXME (commctrl, "No time picker class implemented!\n");
FIXME (commctrl, "No date and time picker class implemented!\n");
break;
case ICC_USEREX_CLASSES:
......@@ -478,7 +510,7 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break;
case ICC_INTERNET_CLASSES:
FIXME (commctrl, "No IPAddress class implemented!\n");
IPADDRESS_Register ();
break;
case ICC_PAGESCROLLER_CLASS:
......@@ -486,11 +518,11 @@ InitCommonControlsEx (LPINITCOMMONCONTROLSEX lpInitCtrls)
break;
case ICC_NATIVEFNTCTL_CLASS:
FIXME (commctrl, "No native font class implemented!\n");
NATIVEFONT_Register ();
break;
default:
WARN (commctrl, "Unknown class! dwICC=0x%lX\n", dwMask);
FIXME (commctrl, "Unknown class! dwICC=0x%lX\n", dwMask);
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 @@
#define dbch_int10 56
#define dbch_int21 57
#define dbch_int31 58
#define dbch_key 59
#define dbch_keyboard 60
#define dbch_ldt 61
#define dbch_listbox 62
#define dbch_listview 63
#define dbch_local 64
#define dbch_mci 65
#define dbch_mcianim 66
#define dbch_mciwave 67
#define dbch_mdi 68
#define dbch_menu 69
#define dbch_message 70
#define dbch_metafile 71
#define dbch_midi 72
#define dbch_mmaux 73
#define dbch_mmio 74
#define dbch_mmsys 75
#define dbch_mmtime 76
#define dbch_module 77
#define dbch_mpr 78
#define dbch_msg 79
#define dbch_nonclient 80
#define dbch_ntdll 81
#define dbch_ole 82
#define dbch_pager 83
#define dbch_palette 84
#define dbch_pidl 85
#define dbch_print 86
#define dbch_process 87
#define dbch_profile 88
#define dbch_progress 89
#define dbch_prop 90
#define dbch_psapi 91
#define dbch_psdrv 92
#define dbch_rebar 93
#define dbch_reg 94
#define dbch_region 95
#define dbch_relay 96
#define dbch_resource 97
#define dbch_s 98
#define dbch_scroll 99
#define dbch_security 100
#define dbch_segment 101
#define dbch_selector 102
#define dbch_sem 103
#define dbch_sendmsg 104
#define dbch_shell 105
#define dbch_shm 106
#define dbch_snoop 107
#define dbch_sound 108
#define dbch_static 109
#define dbch_statusbar 110
#define dbch_stress 111
#define dbch_string 112
#define dbch_syscolor 113
#define dbch_system 114
#define dbch_tab 115
#define dbch_task 116
#define dbch_text 117
#define dbch_thread 118
#define dbch_thunk 119
#define dbch_timer 120
#define dbch_toolbar 121
#define dbch_toolhelp 122
#define dbch_tooltips 123
#define dbch_trackbar 124
#define dbch_treeview 125
#define dbch_tweak 126
#define dbch_uitools 127
#define dbch_updown 128
#define dbch_ver 129
#define dbch_virtual 130
#define dbch_vxd 131
#define dbch_win 132
#define dbch_win16drv 133
#define dbch_win32 134
#define dbch_wing 135
#define dbch_winsock 136
#define dbch_wnet 137
#define dbch_x11 138
#define dbch_x11drv 139
#define dbch_ipaddress 59
#define dbch_key 60
#define dbch_keyboard 61
#define dbch_ldt 62
#define dbch_listbox 63
#define dbch_listview 64
#define dbch_local 65
#define dbch_mci 66
#define dbch_mcianim 67
#define dbch_mciwave 68
#define dbch_mdi 69
#define dbch_menu 70
#define dbch_message 71
#define dbch_metafile 72
#define dbch_midi 73
#define dbch_mmaux 74
#define dbch_mmio 75
#define dbch_mmsys 76
#define dbch_mmtime 77
#define dbch_module 78
#define dbch_mpr 79
#define dbch_msg 80
#define dbch_nativefont 81
#define dbch_nonclient 82
#define dbch_ntdll 83
#define dbch_ole 84
#define dbch_pager 85
#define dbch_palette 86
#define dbch_pidl 87
#define dbch_print 88
#define dbch_process 89
#define dbch_profile 90
#define dbch_progress 91
#define dbch_prop 92
#define dbch_psapi 93
#define dbch_psdrv 94
#define dbch_rebar 95
#define dbch_reg 96
#define dbch_region 97
#define dbch_relay 98
#define dbch_resource 99
#define dbch_s 100
#define dbch_scroll 101
#define dbch_security 102
#define dbch_segment 103
#define dbch_selector 104
#define dbch_sem 105
#define dbch_sendmsg 106
#define dbch_shell 107
#define dbch_shm 108
#define dbch_snoop 109
#define dbch_sound 110
#define dbch_static 111
#define dbch_statusbar 112
#define dbch_stress 113
#define dbch_string 114
#define dbch_syscolor 115
#define dbch_system 116
#define dbch_tab 117
#define dbch_task 118
#define dbch_text 119
#define dbch_thread 120
#define dbch_thunk 121
#define dbch_timer 122
#define dbch_toolbar 123
#define dbch_toolhelp 124
#define dbch_tooltips 125
#define dbch_trackbar 126
#define dbch_treeview 127
#define dbch_tweak 128
#define dbch_uitools 129
#define dbch_updown 130
#define dbch_ver 131
#define dbch_virtual 132
#define dbch_vxd 133
#define dbch_win 134
#define dbch_win16drv 135
#define dbch_win32 136
#define dbch_wing 137
#define dbch_winsock 138
#define dbch_wnet 139
#define dbch_x11 140
#define dbch_x11drv 141
/* Definitions for classes identifiers */
#define dbcl_fixme 0
#define dbcl_err 1
......
......@@ -4,7 +4,7 @@
#include "debugtools.h"
#endif
#define DEBUG_CHANNEL_COUNT 140
#define DEBUG_CHANNEL_COUNT 142
#ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0},
......@@ -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},
};
const char* debug_ch_name[] = {
"1",
......@@ -208,6 +210,7 @@ const char* debug_ch_name[] = {
"int10",
"int21",
"int31",
"ipaddress",
"key",
"keyboard",
"ldt",
......@@ -229,6 +232,7 @@ const char* debug_ch_name[] = {
"module",
"mpr",
"msg",
"nativefont",
"nonclient",
"ntdll",
"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