Release 960717
Wed Jul 17 16:10:16 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [configure.in]
Generate include/config.h instead of putting everything on the
command-line.
Removed -with-malloc-debug option (not useful for end users
anyway).
Added check for memmove().
* [include/wintypes.h] [*/Makefile.in]
Added definition of __WINE__ symbol when compiling Wine code
(emulator or library) as opposed to user programs.
* [debugger/editline.c] [debugger/readline/*]
Moved all the readline code into debugger/editline.c. Removed the
readline subdirectory.
* [files/profile.c]
Added PROFILE_GetWineIniInt().
* [include/stackframe.h] [loader/task.c]
The 16-bit stackframe now also exists for Winelib (even though it
only ever contains one frame).
* [loader/module.c]
Added function MODULE_CreateDummyModule() to create a dummy Win16
module for Winelib and Win32.
* [memory/ldt.c]
Make sure the ldt entry contents will be acceptable for the Linux
kernel.
* [memory/selector.c]
Fixed SetSelectorLimit() when the limit is in pages.
* [misc/port.c]
Added memmove().
* [miscemu/dpmi.c]
Clear the segment registers that contain the selector being freed
in int31/ax=0001.
Added missing break after SelectorAccessRights call.
* [win32/struct32.c]
Added conversions for MDICREATESTRUCT.
* [windows/winproc.c]
Added message conversions for WM_MDICREATE.
Tue Jul 16 19:46:24 1996 Pavel Kankovsky <KAN@frode.dcit.cz>
* [windows/class.c]
Added GetExePtr() call in CLASS_FindClassByAtom().
Mon Jul 15 17:49:38 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [if1632/*.spec]
Some more trivial specs added.
* [if1632/gdi32.spec] [objects/font.c][windows/dialog.c]
CreateFont32* added, changed to new naming std.
* [include/windows.h] [include/mmsystem.h] [include/wintypes.h]
Some defines/types added.
* [win32/thread.c]
TlsSetValue() returns boolean.
* [win32/resource.c] [loader/pe_resource.c] [loader/resource.c]
[controls/menu.c] [objects/bitmap.c]
Cleanup of the resource functions, mostly changes to new naming
standard and fixing of argument types so that they agree with the
win16/win32 API.
Thu Jul 11 15:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/winpos.c]
ShowWindow() fixes.
* [windows/mdi.c]
Fix reversed LPARAM in WM_MDIACTIVATE.
* [wine.ini]
New option AllocSystemColors tells Wine how many colors to grab
from the system colormap.
* [objects/bitblt.c] [objects/dc.c]
Fixed pink garbage over Word buttons in PseudoColor. Added
optional DSTINVERT shortcut for faster text selection.
* [misc/wsprintf.c]
Skip bogus segmented pointers in wsvnprintf16().
* [objects/gdiobj.c]
Added palette handling to UnrealizeObject().
* [objects/color.c] [objects/palette.c] [windows/dce.c]
Wine gets palette manager with support for more than 20 colors.
Only PseudoColor and TrueColor visuals tested so far.
* [windows/winpos.c] [windows/win.c]
Set X size hints for WS_EX_DLGMODALFRAME windows (no resize) and
use XReconfigureWMWindows() instead of XConfigureWindow() in
managed mode.
* [memory/global.c]
Do not allocate more than 640K of DOS memory.
* [misc/main.c]
Do not allow -desktop and -managed together.
diff --git a/objects/bitmap.c b/objects/bitmap.c
index f54cdc7..5680581 100644
--- a/objects/bitmap.c
+++ b/objects/bitmap.c
@@ -12,6 +12,8 @@
#include "callback.h"
#include "dc.h"
#include "bitmap.h"
+#include "heap.h"
+#include "string32.h"
#include "stddebug.h"
#include "debug.h"
@@ -227,24 +229,24 @@
/**********************************************************************
- * LoadBitmap (USER.175)
+ * LoadBitmap16 (USER.175)
*/
-HBITMAP LoadBitmap( HANDLE instance, SEGPTR name )
+HBITMAP16 LoadBitmap16( HINSTANCE16 instance, SEGPTR name )
{
- HBITMAP hbitmap = 0;
+ HBITMAP16 hbitmap = 0;
HDC hdc;
- HRSRC hRsrc;
- HGLOBAL handle;
+ HRSRC16 hRsrc;
+ HGLOBAL16 handle;
BITMAPINFO *info;
if (HIWORD(name))
{
char *str = (char *)PTR_SEG_TO_LIN( name );
- dprintf_bitmap( stddeb, "LoadBitmap(%04x,'%s')\n", instance, str );
+ dprintf_bitmap( stddeb, "LoadBitmap16(%04x,'%s')\n", instance, str );
if (str[0] == '#') name = (SEGPTR)(DWORD)(WORD)atoi( str + 1 );
}
else
- dprintf_bitmap( stddeb, "LoadBitmap(%04x,%04x)\n",
+ dprintf_bitmap( stddeb, "LoadBitmap16(%04x,%04x)\n",
instance, LOWORD(name) );
if (!instance) /* OEM bitmap */
@@ -253,10 +255,10 @@
return OBM_LoadBitmap( LOWORD((int)name) );
}
- if (!(hRsrc = FindResource( instance, name, RT_BITMAP ))) return 0;
- if (!(handle = LoadResource( instance, hRsrc ))) return 0;
+ if (!(hRsrc = FindResource16( instance, name, RT_BITMAP ))) return 0;
+ if (!(handle = LoadResource16( instance, hRsrc ))) return 0;
- info = (BITMAPINFO *)LockResource( handle );
+ info = (BITMAPINFO *)LockResource16( handle );
if ((hdc = GetDC(0)) != 0)
{
char *bits = (char *)info + DIB_BitmapInfoSize( info, DIB_RGB_COLORS );
@@ -264,10 +266,59 @@
bits, info, DIB_RGB_COLORS );
ReleaseDC( 0, hdc );
}
- FreeResource( handle );
+ FreeResource16( handle );
return hbitmap;
}
+/**********************************************************************
+ * LoadBitmap32W (USER32.357)
+ */
+HBITMAP32 LoadBitmap32W( HINSTANCE32 instance, LPCWSTR name )
+{
+ HBITMAP32 hbitmap = 0;
+ HDC hdc;
+ HRSRC32 hRsrc;
+ HGLOBAL32 handle;
+ BITMAPINFO *info;
+
+ if (!instance) /* OEM bitmap */
+ {
+ if (HIWORD((int)name)) return 0;
+ return OBM_LoadBitmap( LOWORD((int)name) );
+ }
+
+ if (!(hRsrc = FindResource32W( instance, name,
+ (LPWSTR)RT_BITMAP ))) return 0;
+ if (!(handle = LoadResource32( instance, hRsrc ))) return 0;
+
+ info = (BITMAPINFO *)LockResource32( handle );
+ if ((hdc = GetDC(0)) != 0)
+ {
+ char *bits = (char *)info + DIB_BitmapInfoSize( info, DIB_RGB_COLORS );
+ hbitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT,
+ bits, info, DIB_RGB_COLORS );
+ ReleaseDC( 0, hdc );
+ }
+ return hbitmap;
+}
+
+
+/**********************************************************************
+ * LoadBitmap32A (USER32.356)
+ */
+HBITMAP32 LoadBitmap32A( HINSTANCE32 instance, LPCSTR name )
+{
+ HBITMAP32 res;
+ if (!HIWORD(name)) res = LoadBitmap32W(instance,(LPWSTR)name);
+ else
+ {
+ LPWSTR uni = STRING32_DupAnsiToUni(name);
+ res = LoadBitmap32W(instance,uni);
+ free(uni);
+ }
+ return res;
+}
+
/***********************************************************************
* BITMAP_DeleteObject