Add API status scripts
Added: trunk/cis/
Added: trunk/cis/ReactOS.ApiStatus/
Added: trunk/cis/ReactOS.ApiStatus/Default.build
Added: trunk/cis/ReactOS.ApiStatus/config.template.include
Added: trunk/cis/ReactOS.ApiStatus/rapistatus.xsl
_____
Added: trunk/cis/ReactOS.ApiStatus/Default.build
--- trunk/cis/ReactOS.ApiStatus/Default.build 2005-07-27 19:21:46 UTC
(rev 16811)
+++ trunk/cis/ReactOS.ApiStatus/Default.build 2005-07-27 20:04:48 UTC
(rev 16812)
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+ Copyright (C) 2005 Casper S. Hornstrup
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+-->
+<project name="ReactOS.ApiStatus" default="publish">
+
+ <property name="reactos.dir" value="reactos" />
+ <property name="apistatus.xsl" value="rapistatus.xsl" />
+ <property name="apistatus.xml" value="rapistatus.xml" />
+ <property name="apistatus.html" value="index.html" />
+ <include buildfile="config.include" />
+
+ <target name="publish">
+ <delete dir="${reactos.dir}"
if="${directory::exists(reactos.dir)}" />
+ <exec program="svn" commandline="export -r HEAD
${source.url} ${reactos.dir}" />
+ <exec program="rgenstat"
commandline="reactos\apistatus.lst ${apistatus.xml}" />
+ <style style="${apistatus.xsl}" destdir="${reactos.dir}"
in="${apistatus.xml}" out="${apistatus.html}" />
+ <copy todir="${publish.dir}" overwrite="true">
+ <fileset basedir=".">
+ <include name="${apistatus.xml}" />
+ <include name="${apistatus.html}" />
+ </fileset>
+ </copy>
+ <delete>
+ <fileset basedir=".">
+ <include name="${apistatus.xml}" />
+ <include name="${apistatus.html}" />
+ </fileset>
+ </delete>
+ <delete dir="${reactos.dir}"
if="${directory::exists(reactos.dir)}" />
+ </target>
+</project>
Property changes on: trunk/cis/ReactOS.ApiStatus/Default.build
___________________________________________________________________
Name: svn:eol-style
+ native
_____
Added: trunk/cis/ReactOS.ApiStatus/config.template.include
--- trunk/cis/ReactOS.ApiStatus/config.template.include 2005-07-27
19:21:46 UTC (rev 16811)
+++ trunk/cis/ReactOS.ApiStatus/config.template.include 2005-07-27
20:04:48 UTC (rev 16812)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2005 Casper S. Hornstrup
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+-->
+<project>
+ <property name="source.url"
value="svn://svn.reactos.com/trunk/reactos" />
+ <property name="publish.dir" value="C:\api" />
+</project>
Property changes on: trunk/cis/ReactOS.ApiStatus/config.template.include
___________________________________________________________________
Name: svn:eol-style
+ native
_____
Copied: trunk/cis/ReactOS.ApiStatus/rapistatus.xsl (from rev 16811,
trunk/reactos/tools/rgenstat/web/rapistatus.xsl)
- Fix debug header nonsense
- Fix some w32api definitions
- MSVC/PSDK Compatibility fixes.
- Clean up user32 headers for greater PCH usage.
Modified: trunk/reactos/apps/utils/ps/ps.c
Modified: trunk/reactos/drivers/dd/mpu401/settings.c
Modified: trunk/reactos/include/reactos/debug.h
Modified: trunk/reactos/include/wine/debug.h
Modified: trunk/reactos/lib/ntdll/inc/ntdll.h
Modified: trunk/reactos/lib/user32/controls/button.c
Modified: trunk/reactos/lib/user32/controls/combo.c
Deleted: trunk/reactos/lib/user32/controls/controls.h
Modified: trunk/reactos/lib/user32/controls/edit.c
Modified: trunk/reactos/lib/user32/controls/icontitle.c
Modified: trunk/reactos/lib/user32/controls/listbox.c
Modified: trunk/reactos/lib/user32/controls/scrollbar.c
Added: trunk/reactos/lib/user32/include/controls.h
Added: trunk/reactos/lib/user32/include/dde_private.h
Deleted: trunk/reactos/lib/user32/include/debug.h
Modified: trunk/reactos/lib/user32/include/user32.h
Modified: trunk/reactos/lib/user32/include/user32p.h
Modified: trunk/reactos/lib/user32/misc/dde.c
Deleted: trunk/reactos/lib/user32/misc/dde_private.h
Modified: trunk/reactos/lib/user32/misc/ddeclient.c
Modified: trunk/reactos/lib/user32/misc/ddeserver.c
Modified: trunk/reactos/lib/user32/misc/display.c
Modified: trunk/reactos/lib/user32/misc/dllmain.c
Modified: trunk/reactos/lib/user32/misc/exticon.c
Modified: trunk/reactos/lib/user32/misc/object.c
Modified: trunk/reactos/lib/user32/misc/stubs.c
Modified: trunk/reactos/lib/user32/windows/bitmap.c
Modified: trunk/reactos/lib/user32/windows/clipboard.c
Modified: trunk/reactos/lib/user32/windows/cursor.c
Modified: trunk/reactos/lib/user32/windows/defwnd.c
Modified: trunk/reactos/lib/user32/windows/dialog.c
Modified: trunk/reactos/lib/user32/windows/draw.c
Modified: trunk/reactos/lib/user32/windows/font.c
Modified: trunk/reactos/lib/user32/windows/hook.c
Modified: trunk/reactos/lib/user32/windows/icon.c
Modified: trunk/reactos/lib/user32/windows/input.c
Modified: trunk/reactos/lib/user32/windows/mdi.c
Modified: trunk/reactos/lib/user32/windows/menu.c
Modified: trunk/reactos/lib/user32/windows/message.c
Modified: trunk/reactos/lib/user32/windows/messagebox.c
Modified: trunk/reactos/lib/user32/windows/nonclient.c
Modified: trunk/reactos/lib/user32/windows/paint.c
Modified: trunk/reactos/lib/user32/windows/window.c
Added: trunk/reactos/w32api/include/winnls32.h
Modified: trunk/reactos/w32api/include/winuser.h
_____
Modified: trunk/reactos/apps/utils/ps/ps.c
--- trunk/reactos/apps/utils/ps/ps.c 2005-07-27 19:10:57 UTC (rev
16810)
+++ trunk/reactos/apps/utils/ps/ps.c 2005-07-27 19:21:46 UTC (rev
16811)
@@ -268,7 +268,7 @@
WriteFile(stdout, buf1, lstrlen(buf1), &r, NULL);
EnumThreadWindows((DWORD)CurrentProcess->Threads[ti].ClientId.UniqueThre
ad,
- (ENUMWINDOWSPROC) EnumThreadProc,
+ (WNDENUMPROC) EnumThreadProc,
(LPARAM)(LPTSTR) szWindowName );
}
CurrentProcess =
(PSYSTEM_PROCESSES)((ULONG_PTR)CurrentProcess +
_____
Modified: trunk/reactos/drivers/dd/mpu401/settings.c
--- trunk/reactos/drivers/dd/mpu401/settings.c 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/drivers/dd/mpu401/settings.c 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -13,7 +13,7 @@
#include "mpu401.h"
-// #define NDEBUG
+#define NDEBUG
#include <debug.h>
#include "sbdebug.h" // our own debug helper
_____
Modified: trunk/reactos/include/reactos/debug.h
--- trunk/reactos/include/reactos/debug.h 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/include/reactos/debug.h 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -63,7 +63,7 @@
#endif
#ifndef NDEBUG
-#define DPRINT(...) do { DbgPrint("(%s:%d) ",__FILE__,__LINE__);
DbgPrint(__VA_ARGS__); } while(0);
+#define DPRINT(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
#define CHECKPOINT do { DbgPrint("%s:%d\n",__FILE__,__LINE__); }
while(0);
#else
#ifdef __GNUC__
_____
Modified: trunk/reactos/include/wine/debug.h
--- trunk/reactos/include/wine/debug.h 2005-07-27 19:10:57 UTC (rev
16810)
+++ trunk/reactos/include/wine/debug.h 2005-07-27 19:21:46 UTC (rev
16811)
@@ -6,6 +6,11 @@
#include <windows.h>
#include <wchar.h>
+/* Add ROS Master debug functions if not added yet */
+#ifndef __INTERNAL_DEBUG
+#include <reactos/debug.h>
+#endif
+
#ifndef __GNUC__
#define __FUNCTION__ ""
#define inline __inline
@@ -13,21 +18,6 @@
unsigned long DbgPrint(char *Format,...);
-#ifdef DBG
-#define DPRINT1 DbgPrint("(%s:%d:%s) ",__FILE__,__LINE__,__FUNCTION__),
DbgPrint
-#else
-#define DPRINT1(...)
-#endif
-
-#if !defined(DBG) || !defined(YDEBUG)
-#define DPRINT(...) do { if(0) { DbgPrint(__VA_ARGS__); } } while(0)
-#else
-#define DPRINT DbgPrint("(%s:%d:%s) ",__FILE__,__LINE__,__FUNCTION__),
DbgPrint
-#endif
-
-#define UNIMPLEMENTED DbgPrint("WARNING: %s at %s:%d is
UNIMPLEMENTED!\n",__FUNCTION__,__FILE__,__LINE__);
-
-
struct _GUID;
/* Exported definitions and macros */
_____
Modified: trunk/reactos/lib/ntdll/inc/ntdll.h
--- trunk/reactos/lib/ntdll/inc/ntdll.h 2005-07-27 19:10:57 UTC (rev
16810)
+++ trunk/reactos/lib/ntdll/inc/ntdll.h 2005-07-27 19:21:46 UTC (rev
16811)
@@ -20,6 +20,9 @@
#define NTOS_MODE_USER
#include <ndk/ntndk.h>
+/* ELF Support */
+#include <elf/elf.h>
+
/* Internal NTDLL */
#include "ntdllp.h"
_____
Modified: trunk/reactos/lib/user32/controls/button.c
--- trunk/reactos/lib/user32/controls/button.c 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/controls/button.c 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -19,20 +19,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
*/
-#define __WINE__
#include <user32.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include "controls.h"
-#include "wine/unicode.h"
-#include "wine/debug.h"
-
-#ifdef __REACTOS__
-HPEN STDCALL GetSysColorPen(int nIndex);
-#endif
-
/* GetWindowLong offsets for window extra information */
#define STATE_GWL_OFFSET 0
#define HFONT_GWL_OFFSET (sizeof(LONG))
@@ -126,33 +114,33 @@
};
-inline static LONG get_button_state( HWND hwnd )
+__inline static LONG get_button_state( HWND hwnd )
{
return GetWindowLongA( hwnd, STATE_GWL_OFFSET );
}
-inline static void set_button_state( HWND hwnd, LONG state )
+__inline static void set_button_state( HWND hwnd, LONG state )
{
SetWindowLongA( hwnd, STATE_GWL_OFFSET, state );
}
-inline static HFONT get_button_font( HWND hwnd )
+__inline static HFONT get_button_font( HWND hwnd )
{
return (HFONT)GetWindowLongA( hwnd, HFONT_GWL_OFFSET );
}
-inline static void set_button_font( HWND hwnd, HFONT font )
+__inline static void set_button_font( HWND hwnd, HFONT font )
{
SetWindowLongA( hwnd, HFONT_GWL_OFFSET, (LONG)font );
}
-inline static UINT get_button_type( LONG window_style )
+__inline static UINT get_button_type( LONG window_style )
{
return (window_style & 0x0f);
}
/* paint a button of any type */
-inline static void paint_button( HWND hwnd, LONG style, UINT action )
+__inline static void paint_button( HWND hwnd, LONG style, UINT action )
{
if (btnPaintFunc[style] && IsWindowVisible(hwnd))
{
@@ -163,7 +151,7 @@
}
/* retrieve the button text; returned buffer must be freed by caller */
-inline static WCHAR *get_button_text( HWND hwnd )
+__inline static WCHAR *get_button_text( HWND hwnd )
{
INT len = 512;
WCHAR *buffer = HeapAlloc( GetProcessHeap(), 0, (len + 1) *
sizeof(WCHAR) );
_____
Modified: trunk/reactos/lib/user32/controls/combo.c
--- trunk/reactos/lib/user32/controls/combo.c 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/controls/combo.c 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -20,18 +20,9 @@
* FIXME: roll up in Netscape 3.01.
*/
-#define __WINE__
#include <user32.h>
-#include <stdarg.h>
-#include <string.h>
-
#define NDEBUG
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "controls.h"
-#include "wine/debug.h"
-#include "wine/unicode.h"
+#include <debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(combo);
_____
Deleted: trunk/reactos/lib/user32/controls/controls.h
--- trunk/reactos/lib/user32/controls/controls.h 2005-07-27
19:10:57 UTC (rev 16810)
+++ trunk/reactos/lib/user32/controls/controls.h 2005-07-27
19:21:46 UTC (rev 16811)
@@ -1,113 +0,0 @@
-#ifndef _ROS_CONTROLS_H
-#define _ROS_CONTROLS_H
-
-/* Missing from Winuser.h */
-#define ES_COMBO 0x00000200 /* Undocumented. Parent is a
combobox */
-#ifndef MAKEINTATOMA
-#define MAKEINTATOMA(atom) ((LPCSTR)((ULONG_PTR)((WORD)(atom))))
-#endif
-#ifndef WM_ISACTIVEICON
-#define WM_ISACTIVEICON 0x0035
-#endif
-
-#ifndef __USE_W32API
-#if defined(STRICT)
-typedef INT (CALLBACK *EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
-typedef INT (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
-#else
-typedef FARPROC EDITWORDBREAKPROCA;
-typedef FARPROC EDITWORDBREAKPROCW;
-#endif
-#endif
-
-#ifndef HBMMENU_CALLBACK
-#define HBMMENU_CALLBACK ((HBITMAP) -1)
-#endif
-#ifndef HBMMENU_SYSTEM
-#define HBMMENU_SYSTEM ((HBITMAP) 1)
-#endif
-#ifndef HBMMENU_MBAR_RESTORE
-#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
-#endif
-#ifndef HBMMENU_MBAR_MINIMIZE
-#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
-#endif
-#ifndef HBMMENU_MBAR_CLOSE
-#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
-#endif
-#ifndef HBMMENU_MBAR_CLOSE_D
-#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
-#endif
-#ifndef HBMMENU_MBAR_MINIMIZE_D
-#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
-#endif
-#ifndef HBMMENU_POPUP_CLOSE
-#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
-#endif
-#ifndef HBMMENU_POPUP_RESTORE
-#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
-#endif
-#ifndef HBMMENU_POPUP_MAXIMIZE
-#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
-#endif
-#ifndef HBMMENU_POPUP_MINIMIZE
-#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
-#endif
-
-/* winuser.h */
-
-
-// I dont know where this goes
-
-#define LB_CARETON 0x01a3
-#define LB_CARETOFF 0x01a4
-
-/* combo box */
-
-#define ID_CB_LISTBOX 1000
-#define ID_CB_EDIT 1001
-
-/* Combo box message return values */
-#define CB_OKAY 0
-
-/* internal flags */
-#define CBF_DROPPED 0x0001
-#define CBF_BUTTONDOWN 0x0002
-#define CBF_NOROLLUP 0x0004
-#define CBF_MEASUREITEM 0x0008
-#define CBF_FOCUSED 0x0010
-#define CBF_CAPTURE 0x0020
-#define CBF_EDIT 0x0040
-#define CBF_NORESIZE 0x0080
-#define CBF_NOTIFY 0x0100
-#define CBF_NOREDRAW 0x0200
-#define CBF_SELCHANGE 0x0400
-#define CBF_NOEDITNOTIFY 0x1000
-#define CBF_NOLBSELECT 0x2000 /* do not change current
selection */
-#define CBF_EUI 0x8000
-
-/* combo state struct */
-typedef struct
-{
- HWND self;
- HWND owner;
- UINT dwStyle;
- HWND hWndEdit;
- HWND hWndLBox;
- UINT wState;
- HFONT hFont;
- RECT textRect;
- RECT buttonRect;
- RECT droppedRect;
- INT droppedIndex;
- INT fixedOwnerDrawHeight;
- INT droppedWidth; /* last two are not used unless set
*/
- INT editHeight; /* explicitly */
-} HEADCOMBO,*LPHEADCOMBO;
-
-/* Note, that CBS_DROPDOWNLIST style is actually (CBS_SIMPLE |
CBS_DROPDOWN) */
-#define CB_GETTYPE( lphc ) ((lphc)->dwStyle & (CBS_DROPDOWNLIST))
-
-extern BOOL COMBO_FlipListbox( LPHEADCOMBO, BOOL, BOOL );
-
-#endif /* _ROS_CONTROLS_H */
_____
Modified: trunk/reactos/lib/user32/controls/edit.c
--- trunk/reactos/lib/user32/controls/edit.c 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/controls/edit.c 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -36,14 +36,9 @@
*
*/
-#define __WINE__
#include <user32.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include "controls.h"
-#include "wine/unicode.h"
-#include "wine/debug.h"
+#define NDEBUG
+#include <debug.h>
WINE_DEFAULT_DEBUG_CHANNEL(edit);
WINE_DECLARE_DEBUG_CHANNEL(combo);
@@ -167,10 +162,10 @@
* We still like to call them internally
* "static inline" makes them more like macro's
*/
-static inline BOOL EDIT_EM_CanUndo(EDITSTATE *es);
-static inline void EDIT_EM_EmptyUndoBuffer(EDITSTATE *es);
-static inline void EDIT_WM_Clear(EDITSTATE *es);
-static inline void EDIT_WM_Cut(EDITSTATE *es);
+static __inline BOOL EDIT_EM_CanUndo(EDITSTATE *es);
+static __inline void EDIT_EM_EmptyUndoBuffer(EDITSTATE *es);
+static __inline void EDIT_WM_Clear(EDITSTATE *es);
+static __inline void EDIT_WM_Cut(EDITSTATE *es);
/*
* Helper functions only valid for one type of control
@@ -310,7 +305,7 @@
* EM_CANUNDO
*
*/
-static inline BOOL EDIT_EM_CanUndo(EDITSTATE *es)
+static __inline BOOL EDIT_EM_CanUndo(EDITSTATE *es)
{
return (es->undo_insert_count || strlenW(es->undo_text));
}
@@ -321,7 +316,7 @@
* EM_EMPTYUNDOBUFFER
*
*/
-static inline void EDIT_EM_EmptyUndoBuffer(EDITSTATE *es)
+static __inline void EDIT_EM_EmptyUndoBuffer(EDITSTATE *es)
{
es->undo_insert_count = 0;
*es->undo_text = '\0';
@@ -333,7 +328,7 @@
* WM_CLEAR
*
*/
-static inline void EDIT_WM_Clear(EDITSTATE *es)
+static __inline void EDIT_WM_Clear(EDITSTATE *es)
{
static const WCHAR empty_stringW[] = {0};
@@ -350,7 +345,7 @@
* WM_CUT
*
*/
-static inline void EDIT_WM_Cut(EDITSTATE *es)
+static __inline void EDIT_WM_Cut(EDITSTATE *es)
{
EDIT_WM_Copy(es);
EDIT_WM_Clear(es);
@@ -406,7 +401,7 @@
return (HBRUSH)SendMessageW(GetParent(es->hwndSelf), msg,
(WPARAM)hdc, (LPARAM)es->hwndSelf);
}
-static inline LRESULT DefWindowProcT(HWND hwnd, UINT msg, WPARAM
wParam, LPARAM lParam, BOOL unicode)
+static __inline LRESULT DefWindowProcT(HWND hwnd, UINT msg, WPARAM
wParam, LPARAM lParam, BOOL unicode)
{
if(unicode)
return DefWindowProcW(hwnd, msg, wParam, lParam);
_____
Modified: trunk/reactos/lib/user32/controls/icontitle.c
--- trunk/reactos/lib/user32/controls/icontitle.c 2005-07-27
19:10:57 UTC (rev 16810)
+++ trunk/reactos/lib/user32/controls/icontitle.c 2005-07-27
19:21:46 UTC (rev 16811)
@@ -18,9 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
*/
-#include "user32.h"
-#include "controls.h"
-#include "wine/unicode.h"
+#include <user32.h>
#ifdef __REACTOS__
#define MAKEINTATOMW(atom) ((LPCWSTR)((ULONG_PTR)((WORD)(atom))))
_____
Modified: trunk/reactos/lib/user32/controls/listbox.c
--- trunk/reactos/lib/user32/controls/listbox.c 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/controls/listbox.c 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -18,15 +18,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
*/
-#define __WINE__
#include <user32.h>
-#include <string.h>
-#include <stdlib.h>
-#include "controls.h"
-#include "wine/debug.h"
+#define NDEBUG
+#include <debug.h>
-#ifdef __REACTOS__
-#include "wine/unicode.h"
/* Start of hack section -------------------------------- */
typedef short *LPINT16;
@@ -42,10 +37,9 @@
#define WM_SYSTIMER 280
UINT STDCALL SetSystemTimer(HWND,UINT_PTR,UINT,TIMERPROC);
-WINBOOL STDCALL KillSystemTimer(HWND,UINT_PTR);
+BOOL STDCALL KillSystemTimer(HWND,UINT_PTR);
/* End of hack section -------------------------------- */
-#endif
/* Unimplemented yet:
* - LBS_USETABSTOPS
_____
Modified: trunk/reactos/lib/user32/controls/scrollbar.c
--- trunk/reactos/lib/user32/controls/scrollbar.c 2005-07-27
19:10:57 UTC (rev 16810)
+++ trunk/reactos/lib/user32/controls/scrollbar.c 2005-07-27
19:21:46 UTC (rev 16811)
@@ -31,8 +31,10 @@
/* INCLUDES
*******************************************************************/
#include <user32.h>
-#include <oleacc.h>
+#define NDEBUG
+#include <debug.h>
+
/* GLOBAL VARIABLES
***********************************************************/
/* Definitions for scrollbar hit testing [See SCROLLBARINFO in MSDN] */
@@ -70,7 +72,7 @@
static LRESULT WINAPI ScrollBarWndProc( HWND hwnd, UINT uMsg, WPARAM
wParam, LPARAM lParam );
UINT STDCALL SetSystemTimer(HWND,UINT_PTR,UINT,TIMERPROC);
-WINBOOL STDCALL KillSystemTimer(HWND,UINT_PTR);
+BOOL STDCALL KillSystemTimer(HWND,UINT_PTR);
/*********************************************************************
* scrollbar class descriptor
@@ -1272,10 +1274,11 @@
// infoPtr->flags = wParam ? ESB_ENABLE_BOTH :
ESB_DISABLE_BOTH;
// SCROLL_RefreshScrollBar(hwnd, SB_CTL, TRUE, TRUE);
// }
+ HDC hdc;
DbgPrint("ScrollBarWndProc WM_ENABLE\n");
NtUserEnableScrollBar(Wnd,SB_CTL,(wParam ? ESB_ENABLE_BOTH :
ESB_DISABLE_BOTH));
/* Refresh Scrollbars. */
- HDC hdc = GetDCEx( Wnd, 0, DCX_CACHE );
+ hdc = GetDCEx( Wnd, 0, DCX_CACHE );
if (!hdc) return 1;
IntDrawScrollBar( Wnd, hdc, SB_CTL);
ReleaseDC( Wnd, hdc );
_____
Copied: trunk/reactos/lib/user32/include/controls.h (from rev 16791,
trunk/reactos/lib/user32/controls/controls.h)
_____
Copied: trunk/reactos/lib/user32/include/dde_private.h (from rev 16791,
trunk/reactos/lib/user32/misc/dde_private.h)
--- trunk/reactos/lib/user32/misc/dde_private.h 2005-07-27 05:42:33 UTC
(rev 16791)
+++ trunk/reactos/lib/user32/include/dde_private.h 2005-07-27
19:21:46 UTC (rev 16811)
@@ -0,0 +1,268 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
+/*
+ * DDEML library
+ *
+ * Copyright 1997 Alexandre Julliard
+ * Copyright 1997 Len White
+ * Copyright 1999 Keith Matthews
+ * Copyright 2000 Corel
+ * Copyright 2001 Eric Pouech
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
+ */
+
+#ifndef __WINE_DDEML_PRIVATE_H
+#define __WINE_DDEML_PRIVATE_H
+
+/* defined in atom.c file.
+ */
+#define MAX_ATOM_LEN 255
+
+/* Maximum buffer size ( including the '\0' ).
+ */
+#define MAX_BUFFER_LEN (MAX_ATOM_LEN + 1)
+
+/* The internal structures (prefixed by WDML) are used as follows:
+ * + a WDML_INSTANCE is created for each instance creation
(DdeInitialize)
+ * - a popup window (InstanceClass) is created for each instance.
+ * - this window is used to receive all the DDEML events (server
registration,
+ * conversation confirmation...). See the WM_WDML_???? messages
for details
+ * + when registring a server (DdeNameService) a WDML_SERVER is created
+ * - a popup window (ServerNameClass) is created
+ * + a conversation is represented by two WDML_CONV structures:
+ * - one on the client side, the other one on the server side
+ * - this is needed because the address spaces may be different
+ * - therefore, two lists of links are kept for each instance
+ * - two windows are created for a conversation:
+ * o a popup window on client side (ClientConvClass)
+ * o a child window (of the ServerName) on the server side
+ * (ServerConvClass)
+ * - all the exchanges then take place between those two windows
+ * - windows for the conversation exist in two forms (Ansi &
Unicode). This
+ * is only needed when a partner in a conv is not handled by
DDEML. The
+ * type (A/W) of the window is used to handle the ansi <=>
unicode
+ * transformations
+ * - two handles are created for a conversation (on each side).
Each handle
+ * is linked to a structure. To help differentiate those handles,
the
+ * local one has an even value, whereas the remote one has an odd
value.
+ * + a (warm or link) is represented by two WDML_LINK structures:
+ * - one on client side, the other one on server side
+ * - therefore, two lists of links are kept for each instance
+ *
+ * To help getting back to data, WDML windows store information:
+ * - offset 0: the DDE instance
+ * - offset 4: the current conversation (for ClientConv and
ServerConv only)
+ *
+ * All the implementation (client & server) makes the assumption that
the other side
+ * is not always a DDEML partner. However, if it's the case,
supplementary services
+ * are available (most notably the REGISTER/UNREGISTER and
CONNECT_CONFIRM messages
+ * to the callback function). To be correct in every situation, all the
basic
+ * exchanges are made using the 'pure' DDE protocol. A (future !)
enhancement would
+ * be to provide a new protocol in the case were both partners are
handled by DDEML.
+ *
+ * The StringHandles are in fact stored as local atoms. So an HSZ and a
(local) atom
+ * can be used interchangably. However, in order to keep track of the
allocated HSZ,
+ * and to free them upon instance termination, all HSZ are stored in a
link list.
+ * When the HSZ need to be passed thru DDE messages, we need to convert
them back and
+ * forth to global atoms.
+ */
+
+/* this struct has the same mapping as all the DDE??? structures */
+typedef struct {
+ unsigned short unused:12,
+ fResponse:1,
+ fRelease:1,
+ fDeferUpd:1,
+ fAckReq:1;
+ short cfFormat;
+} WINE_DDEHEAD;
+
+typedef struct tagHSZNode
+{
+ struct tagHSZNode* next;
+ HSZ hsz;
+ unsigned refCount;
+} HSZNode;
+
+typedef struct tagWDML_SERVER
+{
+ struct tagWDML_SERVER* next;
+ HSZ hszService;
+ HSZ hszServiceSpec;
+ ATOM atomService;
+ ATOM atomServiceSpec;
+ BOOL filterOn;
+ HWND hwndServer;
+} WDML_SERVER;
+
+typedef struct tagWDML_XACT {
+ struct tagWDML_XACT* next; /* list of transactions
in conversation */
+ DWORD xActID;
+ UINT ddeMsg;
+ HDDEDATA hDdeData;
+ DWORD dwTimeout;
+ DWORD hUser;
+ UINT wType;
+ UINT wFmt;
+ HSZ hszItem;
+ ATOM atom; /* as converted from or
to hszItem */
+ HGLOBAL hMem;
+ LPARAM lParam; /* useful for reusing */
+} WDML_XACT;
+
+typedef struct tagWDML_CONV
+{
+ struct tagWDML_CONV* next; /* to link all the
conversations */
+ struct tagWDML_INSTANCE* instance;
+ HSZ hszService; /* pmt used for
connection */
+ HSZ hszTopic; /* pmt used for
connection */
+ UINT afCmd; /* service name flag */
+ CONVCONTEXT convContext;
+ HWND hwndClient; /* source of
conversation (ClientConvClass) */
+ HWND hwndServer; /* destination of
conversation (ServerConvClass) */
+ WDML_XACT* transactions; /* pending transactions
*/
+ DWORD hUser; /* user defined value */
+ DWORD wStatus; /* same bits as
convinfo.wStatus */
+ DWORD wConvst; /* same values as
convinfo.wConvst */
+} WDML_CONV;
+
+/* DDE_LINK struct defines hot, warm, and cold links */
+typedef struct tagWDML_LINK {
+ struct tagWDML_LINK* next; /* to link all the
active links */
+ HCONV hConv; /* to get back to the
converstaion */
+ UINT transactionType;/* 0 for no link */
+ HSZ hszItem; /* item
targetted for (hot/warm) link */
+ UINT uFmt; /* format for data */
+} WDML_LINK;
+
+typedef struct tagWDML_INSTANCE
+{
+ struct tagWDML_INSTANCE* next;
+ DWORD instanceID; /* needed to track
monitor usage */
+ DWORD threadID; /* needed to keep
instance linked to a unique thread */
+ BOOL monitor; /* have these two as
full Booleans cos they'll be tested frequently */
+ BOOL clientOnly; /* bit wasteful of space
but it will be faster */
+ BOOL unicode; /* Flag to indicate
Win32 API used to initialise */
+ BOOL win16; /* flag to indicate
Win16 API used to initialize */
+ HSZNode* nodeList; /* for cleaning upon
exit */
+ PFNCALLBACK callback;
+ DWORD CBFflags;
+ DWORD monitorFlags;
+ DWORD lastError;
+ HWND hwndEvent;
+ WDML_SERVER* servers; /* list of registered
servers */
+ WDML_CONV* convs[2]; /* active conversations
for this instance (client and server) */
+ WDML_LINK* links[2]; /* active links for this
instance (client and server) */
+} WDML_INSTANCE;
+
+extern CRITICAL_SECTION WDML_CritSect; /* protection for
instance list */
+
+/* header for the DDE Data objects */
+typedef struct tagDDE_DATAHANDLE_HEAD
+{
+ short cfFormat;
+ WORD bAppOwned;
+} DDE_DATAHANDLE_HEAD;
+
+typedef enum tagWDML_SIDE
+{
+ WDML_CLIENT_SIDE = 0, WDML_SERVER_SIDE = 1
+} WDML_SIDE;
+
+typedef enum {
+ WDML_QS_ERROR, WDML_QS_HANDLED, WDML_QS_PASS, WDML_QS_SWALLOWED,
WDML_QS_BLOCK,
+} WDML_QUEUE_STATE;
+
+extern HDDEDATA WDML_InvokeCallback(WDML_INSTANCE* pInst, UINT
uType, UINT uFmt, HCONV hConv,
+ HSZ hsz1, HSZ hsz2, HDDEDATA
hdata,
+ DWORD dwData1, DWORD
dwData2);
+extern HDDEDATA WDML_InvokeCallback16(PFNCALLBACK pfn, UINT
uType, UINT uFmt, HCONV hConv,
+ HSZ hsz1, HSZ hsz2,
HDDEDATA hdata,
+ DWORD dwData1, DWORD
dwData2);
+extern WDML_SERVER* WDML_AddServer(WDML_INSTANCE* pInstance, HSZ
hszService, HSZ hszTopic);
+extern void WDML_RemoveServer(WDML_INSTANCE* pInstance, HSZ
hszService, HSZ hszTopic);
+extern WDML_SERVER* WDML_FindServer(WDML_INSTANCE* pInstance, HSZ
hszService, HSZ hszTopic);
+/* transaction handler on the server side */
+extern WDML_QUEUE_STATE WDML_ServerHandle(WDML_CONV* pConv, WDML_XACT*
pXAct);
+/* called both in DdeClientTransaction and server side. */
+extern UINT WDML_Initialize(LPDWORD pidInst, PFNCALLBACK
pfnCallback,
+ DWORD afCmd, DWORD ulRes, BOOL
bUnicode, BOOL b16);
+extern WDML_CONV* WDML_AddConv(WDML_INSTANCE* pInstance, WDML_SIDE
side,
+ HSZ hszService, HSZ hszTopic, HWND
hwndClient, HWND hwndServer);
+extern void WDML_RemoveConv(WDML_CONV* pConv, WDML_SIDE
side);
+extern WDML_CONV* WDML_GetConv(HCONV hConv, BOOL checkConnected);
+extern WDML_CONV* WDML_GetConvFromWnd(HWND hWnd);
+extern WDML_CONV* WDML_FindConv(WDML_INSTANCE* pInstance,
WDML_SIDE side,
+ HSZ hszService, HSZ hszTopic);
+extern BOOL WDML_PostAck(WDML_CONV* pConv, WDML_SIDE side,
WORD appRetCode,
+ BOOL fBusy, BOOL fAck, UINT pmt,
LPARAM lParam, UINT oldMsg);
+extern void WDML_AddLink(WDML_INSTANCE* pInstance, HCONV
hConv, WDML_SIDE side,
+ UINT wType, HSZ hszItem, UINT
wFmt);
+extern WDML_LINK* WDML_FindLink(WDML_INSTANCE* pInstance, HCONV
hConv, WDML_SIDE side,
+ HSZ hszItem, BOOL use_fmt, UINT
uFmt);
+extern void WDML_RemoveLink(WDML_INSTANCE* pInstance, HCONV
hConv, WDML_SIDE side,
+ HSZ hszItem, UINT wFmt);
+extern void WDML_RemoveAllLinks(WDML_INSTANCE* pInstance,
WDML_CONV* pConv, WDML_SIDE side);
+/* string internals */
+extern void WDML_FreeAllHSZ(WDML_INSTANCE* pInstance);
+extern BOOL WDML_DecHSZ(WDML_INSTANCE* pInstance, HSZ hsz);
+extern BOOL WDML_IncHSZ(WDML_INSTANCE* pInstance, HSZ hsz);
+extern ATOM WDML_MakeAtomFromHsz(HSZ hsz);
+extern HSZ WDML_MakeHszFromAtom(WDML_INSTANCE* pInstance,
ATOM atom);
+/* client calls these */
+extern WDML_XACT* WDML_AllocTransaction(WDML_INSTANCE* pInstance,
UINT ddeMsg, UINT wFmt, HSZ hszItem);
+extern void WDML_QueueTransaction(WDML_CONV* pConv,
WDML_XACT* pXAct);
+extern BOOL WDML_UnQueueTransaction(WDML_CONV* pConv,
WDML_XACT* pXAct);
+extern void WDML_FreeTransaction(WDML_INSTANCE* pInstance,
WDML_XACT* pXAct, BOOL doFreePmt);
+extern WDML_XACT* WDML_FindTransaction(WDML_CONV* pConv, DWORD
tid);
+extern HGLOBAL WDML_DataHandle2Global(HDDEDATA hDdeData, BOOL
fResponse, BOOL fRelease,
+ BOOL fDeferUpd, BOOL
dAckReq);
+extern HDDEDATA WDML_Global2DataHandle(HGLOBAL hMem,
WINE_DDEHEAD* da);
+extern BOOL WDML_IsAppOwned(HDDEDATA hDdeData);
+extern WDML_INSTANCE* WDML_GetInstance(DWORD InstId);
+extern WDML_INSTANCE* WDML_GetInstanceFromWnd(HWND hWnd);
+/* broadcasting to DDE windows */
+extern void WDML_BroadcastDDEWindows(const char* clsName,
UINT uMsg,
+ WPARAM wParam, LPARAM
lParam);
+extern void WDML_NotifyThreadExit(DWORD tid);
+
+static __inline void WDML_ExtractAck(WORD status, DDEACK* da)
+{
+ *da = *((DDEACK*)&status);
+}
+
+extern const char WDML_szEventClass[]; /* class of window
for events (aka instance) */
+extern const char WDML_szServerConvClassA[]; /* class of window
for server side conv (ansi) */
+extern const WCHAR WDML_szServerConvClassW[]; /* class of window
for server side conv (unicode) */
+extern const char WDML_szClientConvClassA[]; /* class of window
for client side conv (ansi) */
+extern const WCHAR WDML_szClientConvClassW[]; /* class of window
for client side conv (unicode) */
+
+#define WM_WDML_REGISTER (WM_USER + 0x200)
+#define WM_WDML_UNREGISTER (WM_USER + 0x201)
+#define WM_WDML_CONNECT_CONFIRM (WM_USER + 0x202)
+
+/* parameters for messages:
+ * wParam lParam
+ * Register atom for service name atom for service
spec
+ * Unregister atom for service name atom for service
spec
+ * ConnectConfirm client window handle server window
handle
+ */
+
+#define GWL_WDML_INSTANCE (0)
+#define GWL_WDML_CONVERSATION (4)
+#define GWL_WDML_SERVER (4)
+
+#endif /* __WINE_DDEML_PRIVATE_H */
_____
Deleted: trunk/reactos/lib/user32/include/debug.h
--- trunk/reactos/lib/user32/include/debug.h 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/include/debug.h 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -1,74 +0,0 @@
-/*
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS user32.dll
- * FILE: include/debug.h
- * PURPOSE: Debugging support macros
- * DEFINES: DBG - Enable debug output
- * NASSERT - Disable assertions
- */
-#ifndef __DEBUG_H
-#define __DEBUG_H
-
-#define NORMAL_MASK 0x000000FF
-#define SPECIAL_MASK 0xFFFFFF00
-#define MIN_TRACE 0x00000001
-#define MID_TRACE 0x00000002
-#define MAX_TRACE 0x00000003
-
-#define DEBUG_CHECK 0x00000100
-#define DEBUG_OBJECT 0x00000200
-#define DEBUG_WINDOW 0x00000400
-#define DEBUG_ULTRA 0xFFFFFFFF
-
-#ifdef ASSERT
-#undef ASSERT
-#endif
-
-#ifdef DBG
-
-extern DWORD DebugTraceLevel;
-
-#define D(_t_, _x_) \
- if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \
- ((DebugTraceLevel & _t_) > NORMAL_MASK)) { \
- DbgPrint("(%hS:%d)(%hS) ", __FILE__, __LINE__, __FUNCTION__); \
- DbgPrint _x_; \
- }
-
-#ifdef NASSERT
-#define ASSERT(x)
-#else /* NASSERT */
-#define ASSERT(x) if (!(x)) { D(MIN_TRACE, ("Assertion "#x" failed at
%s:%d\n", __FILE__, __LINE__)); }
-#endif /* NASSERT */
-
-#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
-
-#else /* DBG */
-
-#define D(_t_, _x_)
-
-#define ASSERT_IRQL(x)
-#define ASSERT(x)
-
-#endif /* DBG */
-
-#ifdef assert
-#undef assert
-#endif
-#define assert(x) ASSERT(x)
-#define assert_irql(x) ASSERT_IRQL(x)
-
-
-#define UNIMPLEMENTED \
- D(MIN_TRACE, ("is unimplemented, please try again later.\n"));
-
-#define CHECKPOINT \
- D(DEBUG_CHECK, ("\n"));
-
-#define DPRINT(X...) D(DEBUG_CHECK, (X))
-
-#define CP CHECKPOINT
-
-#endif /* __DEBUG_H */
-
-/* EOF */
_____
Modified: trunk/reactos/lib/user32/include/user32.h
--- trunk/reactos/lib/user32/include/user32.h 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/include/user32.h 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -8,17 +8,17 @@
/* INCLUDES
******************************************************************/
-#ifndef USER32_H
-#define USER32_H
-
/* C Headers */
#include <stdio.h>
-#include <ctype.h>
+#include <math.h>
/* SDK/NDK Headers */
+#define _USER32_
+#define OEMRESOURCE
+#define NTOS_MODE_USER
#include <windows.h>
#include <windowsx.h>
-#define NTOS_MODE_USER
+#include <winnls32.h>
#include <ndk/ntndk.h>
/* CSRSS Headers */
@@ -32,11 +32,13 @@
#include <win32k/menu.h>
#include <win32k/paint.h>
+/* WINE Headers */
+#include <wine/debug.h>
+#include <wine/unicode.h>
+
/* Internal User32 Headers */
#include "user32p.h"
/* FIXME: FILIP */
HGDIOBJ STDCALL NtGdiSelectObject(HDC hDC, HGDIOBJ hGDIObj);
DWORD STDCALL GdiGetCharDimensions(HDC, LPTEXTMETRICW, DWORD *);
-
-#endif /* USER32_H */
_____
Modified: trunk/reactos/lib/user32/include/user32p.h
--- trunk/reactos/lib/user32/include/user32p.h 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/include/user32p.h 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -14,10 +14,9 @@
/* Private User32 Headers */
#include "accel.h"
#include "cursor.h"
-#ifndef __WINE__
-#include "debug.h"
-#endif
+#include "controls.h"
#include "draw.h"
+#include "dde_private.h"
#include "menu.h"
#include "message.h"
#include "regcontrol.h"
_____
Modified: trunk/reactos/lib/user32/misc/dde.c
--- trunk/reactos/lib/user32/misc/dde.c 2005-07-27 19:10:57 UTC (rev
16810)
+++ trunk/reactos/lib/user32/misc/dde.c 2005-07-27 19:21:46 UTC (rev
16811)
@@ -22,22 +22,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
*/
-#include "wine/config.h"
-#include "wine/port.h"
+#include <user32.h>
+#define NDEBUG
+#include <debug.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "dde.h"
-#include "ddeml.h"
-#include "wine/debug.h"
-#include "dde_private.h"
-
WINE_DEFAULT_DEBUG_CHANNEL(ddeml);
/* convert between ATOM and HSZ avoiding compiler warnings */
_____
Deleted: trunk/reactos/lib/user32/misc/dde_private.h
--- trunk/reactos/lib/user32/misc/dde_private.h 2005-07-27 19:10:57 UTC
(rev 16810)
+++ trunk/reactos/lib/user32/misc/dde_private.h 2005-07-27 19:21:46 UTC
(rev 16811)
@@ -1,268 +0,0 @@
-/* -*- tab-width: 8; c-basic-offset: 4 -*- */
-
-/*
- * DDEML library
- *
- * Copyright 1997 Alexandre Julliard
- * Copyright 1997 Len White
- * Copyright 1999 Keith Matthews
- * Copyright 2000 Corel
- * Copyright 2001 Eric Pouech
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
- */
-
-#ifndef __WINE_DDEML_PRIVATE_H
-#define __WINE_DDEML_PRIVATE_H
-
-/* defined in atom.c file.
- */
-#define MAX_ATOM_LEN 255
-
-/* Maximum buffer size ( including the '\0' ).
- */
-#define MAX_BUFFER_LEN (MAX_ATOM_LEN + 1)
-
-/* The internal structures (prefixed by WDML) are used as follows:
- * + a WDML_INSTANCE is created for each instance creation
(DdeInitialize)
- * - a popup window (InstanceClass) is created for each instance.
- * - this window is used to receive all the DDEML events (server
registration,
- * conversation confirmation...). See the WM_WDML_???? messages
for details
- * + when registring a server (DdeNameService) a WDML_SERVER is created
- * - a popup window (ServerNameClass) is created
- * + a conversation is represented by two WDML_CONV structures:
- * - one on the client side, the other one on the server side
- * - this is needed because the address spaces may be different
- * - therefore, two lists of links are kept for each instance
- * - two windows are created for a conversation:
- * o a popup window on client side (ClientConvClass)
- * o a child window (of the ServerName) on the server side
- * (ServerConvClass)
- * - all the exchanges then take place between those two windows
- * - windows for the conversation exist in two forms (Ansi &
Unicode). This
- * is only needed when a partner in a conv is not handled by
DDEML. The
- * type (A/W) of the window is used to handle the ansi <=>
unicode
- * transformations
- * - two handles are created for a conversation (on each side).
Each handle
- * is linked to a structure. To help differentiate those handles,
the
- * local one has an even value, whereas the remote one has an odd
value.
- * + a (warm or link) is represented by two WDML_LINK structures:
- * - one on client side, the other one on server side
- * - therefore, two lists of links are kept for each instance
- *
- * To help getting back to data, WDML windows store information:
- * - offset 0: the DDE instance
- * - offset 4: the current conversation (for ClientConv and
ServerConv only)
- *
- * All the implementation (client & server) makes the assumption that
the other side
- * is not always a DDEML partner. However, if it's the case,
supplementary services
- * are available (most notably the REGISTER/UNREGISTER and
CONNECT_CONFIRM messages
- * to the callback function). To be correct in every situation, all the
basic
- * exchanges are made using the 'pure' DDE protocol. A (future !)
enhancement would
- * be to provide a new protocol in the case were both partners are
handled by DDEML.
- *
- * The StringHandles are in fact stored as local atoms. So an HSZ and a
(local) atom
- * can be used interchangably. However, in order to keep track of the
allocated HSZ,
[truncated at 1000 lines; 798 more skipped]