Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
diff --git a/windows/win.c b/windows/win.c
index de84af9..054df8c 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -224,7 +224,7 @@
CLASS *classPtr;
HDC hdc;
- if (!(hclass = CLASS_FindClassByName( DESKTOP_CLASS_NAME, 0, &classPtr )))
+ if (!(hclass = CLASS_FindClassByName( DESKTOP_CLASS_ATOM, 0, &classPtr )))
return FALSE;
hwndDesktop = USER_HEAP_ALLOC( sizeof(WND)+classPtr->wc.cbWndExtra );
@@ -302,17 +302,23 @@
int wmcreate;
XSetWindowAttributes win_attr;
- if (windowName != NULL && HIWORD(windowName) == 0) {
- dprintf_win(stddeb,"CreateWindowEx: %04x ", LOWORD(windowName));
- } else {
- dprintf_win(stddeb,"CreateWindowEx: '%s' ", windowName);
- }
- dprintf_win(stddeb, "%08lX '%s' %08lX %d,%d %dx%d %04X %04X %04X %08lx\n",
- exStyle, className, style, x, y, width, height,
+ /* FIXME: windowName and className should be SEGPTRs */
+
+ if (HIWORD(windowName))
+ dprintf_win( stddeb, "CreateWindowEx: '%s' ", windowName );
+ else
+ dprintf_win( stddeb, "CreateWindowEx: %04x ", LOWORD(windowName) );
+ if (HIWORD(className))
+ dprintf_win( stddeb, "'%s' ", className );
+ else
+ dprintf_win( stddeb, "%04x ", LOWORD(className) );
+
+ dprintf_win(stddeb, "%08lx %08lx %d,%d %dx%d %04x %04x %04x %08lx\n",
+ exStyle, style, x, y, width, height,
parent, menu, instance, data);
/* 'soundrec.exe' has negative position !
Why ? For now, here a patch : */
- if (!strcmp(className, "SoundRec"))
+ if (HIWORD(className) && !strcmp(className, "SoundRec"))
{
if (x < 0) x = 0;
if (y < 0) y = 0;
@@ -330,7 +336,7 @@
{
/* Make sure parent is valid */
if (!IsWindow( parent )) {
- dprintf_win(stddeb,"CreateWindowEx: Parent %x is not a windows\n", parent);
+ dprintf_win(stddeb,"CreateWindowEx: Parent %x is not a window\n", parent);
return 0;
}
}
@@ -342,9 +348,15 @@
}
}
- if (!(class = CLASS_FindClassByName( className, GetExePtr( instance ), &classPtr ))) {
- fprintf(stderr,"CreateWindow BAD CLASSNAME '%s' !\n", className);
- return 0;
+ {
+ /* FIXME!! */
+ char buff[256];
+ if (HIWORD(className)) strcpy( buff, className );
+ if (!(class = CLASS_FindClassByName( HIWORD(className) ? MAKE_SEGPTR(buff) : (SEGPTR)className,
+ GetExePtr( instance ), &classPtr ))) {
+ fprintf(stderr,"CreateWindow BAD CLASSNAME '%s' !\n", className);
+ return 0;
+ }
}
/* Correct the window style */
@@ -457,14 +469,12 @@
{
if (menu) SetMenu(hwnd, menu);
else if (classPtr->wc.lpszMenuName)
- SetMenu(hwnd,LoadMenu(instance,(SEGPTR)classPtr->wc.lpszMenuName));
+ SetMenu( hwnd, LoadMenu( instance, classPtr->wc.lpszMenuName ) );
}
else wndPtr->wIDmenu = menu;
/* Send the WM_CREATE message */
- hclassName = USER_HEAP_ALLOC( strlen(className)+1 );
- strcpy( USER_HEAP_LIN_ADDR(hclassName), className );
createStruct.lpCreateParams = (LPSTR)data;
createStruct.hInstance = instance;
createStruct.hMenu = menu;
@@ -474,24 +484,29 @@
createStruct.x = x;
createStruct.y = y;
createStruct.style = style;
- createStruct.lpszClass = (LPSTR)USER_HEAP_SEG_ADDR(hclassName);
createStruct.dwExStyle = 0;
- if (windowName)
+ if (HIWORD(className))
{
- if (HIWORD(windowName) == 0) {
- /* Hack for SS_ICON controls */
- createStruct.lpszName = windowName;
- hwinName = 0;
- } else {
- hwinName = USER_HEAP_ALLOC( strlen(windowName)+1 );
- strcpy( USER_HEAP_LIN_ADDR(hwinName), windowName );
- createStruct.lpszName = (LPSTR)USER_HEAP_SEG_ADDR(hwinName);
- }
+ hclassName = USER_HEAP_ALLOC( strlen(className)+1 );
+ strcpy( USER_HEAP_LIN_ADDR(hclassName), className );
+ createStruct.lpszClass = (LPSTR)USER_HEAP_SEG_ADDR(hclassName);
+ }
+ else
+ {
+ hclassName = 0;
+ createStruct.lpszClass = className;
+ }
+
+ if (HIWORD(windowName))
+ {
+ hwinName = USER_HEAP_ALLOC( strlen(windowName)+1 );
+ strcpy( USER_HEAP_LIN_ADDR(hwinName), windowName );
+ createStruct.lpszName = (LPSTR)USER_HEAP_SEG_ADDR(hwinName);
}
else
{
hwinName = 0;
- createStruct.lpszName = NULL;
+ createStruct.lpszName = windowName;
}
wmcreate = SendMessage( hwnd, WM_NCCREATE, 0, MAKE_SEGPTR(&createStruct) );
@@ -506,7 +521,7 @@
wmcreate = SendMessage(hwnd, WM_CREATE, 0, MAKE_SEGPTR(&createStruct));
}
- USER_HEAP_FREE( hclassName );
+ if (hclassName) USER_HEAP_FREE( hclassName );
if (hwinName) USER_HEAP_FREE( hwinName );
if (wmcreate == -1)
@@ -609,7 +624,7 @@
/***********************************************************************
* FindWindow (USER.50)
*/
-HWND FindWindow(LPSTR ClassMatch, LPSTR TitleMatch)
+HWND FindWindow( SEGPTR ClassMatch, LPSTR TitleMatch )
{
HCLASS hclass;
CLASS *classPtr;