Release 960314
Wed Mar 13 19:46:50 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/edit.c]
Removed calls to memmove (not portable).
* [debugger/dbg.y] [debugger/debug.l]
Prefixed all token with 't' to avoid conflicts with type
definitions.
Added 'walk queue', 'walk class' and 'info class' commands.
* [debugger/info.c]
Moved queue and window information functions to windows/queue.c
and windows/win.c respectively.
* [loader/signal.c]
Added SIGHUP handling to force entry into built-in debugger.
Cleaned up a bit.
* [misc/spy.c]
General cleanup and performance improvements.
* [windows/class.c]
Added CLASS_DumpClass() and CLASS_WalkClasses() functions for
debugger.
* [windows/event.c]
Pressing Ctrl-Alt-Return forces an entry into the debugger. Not
sure if this key combination is a good choice...
* [windows/message.c] [windows/queue.c] (New file)
Moved message queue handling functions to windows/queue.c.
Tue Mar 12 14:55:16 1996 Onno Hovers <onno@stack.urc.tue.nl>
* [if1632/except.S] [include/except.h] [win32/except.c] (New files)
Implemented Win32 exception functions: RaiseException(),
RtlUnwind(), SetUnhandledExceptionFilter() and
UnhandledExceptionFilter().
Mon Mar 11 19:23:29 1996 Albrecht Kleine <kleine@ak.sax.de>
* [controls/listbox.c] [include/listbox.h]
Special handling for COMBOLBOX styles introduced via extension of
HEADLIST structure: lphl->dwStyle.
Mon Mar 11 13:31:06 1996 Greg Kreider <kreider@natlab.research.philips.com>
* [controls/combo.c]
Any mouse movement within a small distance (defined by CBLMM_EDGE)
of the top or bottom edge causes the window to scroll. Also moved
some assignments so the routine works correctly.
* [controls/listbox.c]
Changing selection in ListBoxSetCurSel now updates PrevFocused.
Added to LBSetFont and CreateListBoxStruct a fake hdc that tests
and sets the standard text height.
Sun Mar 10 08:39:23 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/dce.c]
Fixed memory leak in DCE_ClipWindows().
diff --git a/windows/class.c b/windows/class.c
index f148b38..527127e 100644
--- a/windows/class.c
+++ b/windows/class.c
@@ -23,6 +23,72 @@
/***********************************************************************
+ * CLASS_DumpClass
+ *
+ * Dump the content of a class structure to stderr.
+ */
+void CLASS_DumpClass( HCLASS hClass )
+{
+ CLASS *ptr;
+ char className[80];
+ int i;
+
+ if (!(ptr = CLASS_FindClassPtr( hClass )))
+ {
+ fprintf( stderr, "%04x is not a class handle\n", hClass );
+ return;
+ }
+ GlobalGetAtomName( ptr->atomName, className, sizeof(className) );
+
+ fprintf( stderr, "Class %04x:\n", hClass );
+ fprintf( stderr,
+ "next=%04x name=%04x '%s' style=%04x wndProc=%08lx\n"
+ "inst=%04x hdce=%04x icon=%04x cursor=%04x bkgnd=%04x\n"
+ "clsExtra=%d winExtra=%d #windows=%d\n",
+ ptr->hNext, ptr->atomName, className, ptr->wc.style,
+ (DWORD)ptr->wc.lpfnWndProc, ptr->wc.hInstance, ptr->hdce,
+ ptr->wc.hIcon, ptr->wc.hCursor, ptr->wc.hbrBackground,
+ ptr->wc.cbClsExtra, ptr->wc.cbWndExtra, ptr->cWindows );
+ if (ptr->wc.cbClsExtra)
+ {
+ fprintf( stderr, "extra bytes:" );
+ for (i = 0; i < ptr->wc.cbClsExtra; i++)
+ fprintf( stderr, " %02x", *((BYTE *)ptr->wExtra+i) );
+ fprintf( stderr, "\n" );
+ }
+ fprintf( stderr, "\n" );
+}
+
+
+/***********************************************************************
+ * CLASS_WalkClasses
+ *
+ * Walk the class list and print each class on stderr.
+ */
+void CLASS_WalkClasses(void)
+{
+ HCLASS hClass = firstClass;
+ CLASS *ptr;
+ char className[80];
+
+ fprintf( stderr, "Class Name Style WndProc\n" );
+ while (hClass)
+ {
+ if (!(ptr = CLASS_FindClassPtr( hClass )))
+ {
+ fprintf( stderr, "*** Bad class %04x in list\n", hClass );
+ return;
+ }
+ GlobalGetAtomName( ptr->atomName, className, sizeof(className) );
+ fprintf( stderr, "%04x %-20.20s %04x %08lx\n",
+ hClass, className, ptr->wc.style, (DWORD)ptr->wc.lpfnWndProc);
+ hClass = ptr->hNext;
+ }
+ fprintf( stderr, "\n" );
+}
+
+
+/***********************************************************************
* CLASS_FindClassByName
*
* Return a handle and a pointer to the class.