Skip to content
Snippets Groups Projects
Commit 37d68ef5 authored by Eric Kohl's avatar Eric Kohl Committed by Alexandre Julliard
Browse files

Added IPAddress and NativeFont controls.

parent 978137dc
No related branches found
No related tags found
No related merge requests found
......@@ -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 */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment