Release 960811
Sun Aug 11 13:00:20 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [configure.in] [include/acconfig.h] [tools/build.c]
Added check for underscore on external symbols.
* [memory/selector.c] [memory/global.c]
Fixed FreeSelector() to free only one selector.
Added SELECTOR_FreeBlock() to free an array of selectors.
* [objects/color.c]
Fixed a bug in COLOR_ToLogical() that caused GetPixel() to fail on
hi-color displays.
* [tools/build.c] [if1632/crtdll.spec]
Added 'extern' type, used for external variables or functions.
* [windows/winpos.c]
Allow de-activating a window in WINPOS_ChangeActiveWindow().
* [windows/winproc.c]
Added 32-to-16 translation for button messages.
Fixed WINPROC_GetPtr() to avoid crashes on 32-bit procedures that
happen to be valid SEGPTRs.
Sat Aug 10 18:22:25 1996 Albrecht Kleine <kleine@ak.sax.de>
* [windows/message.c]
Removed a FIXME in MSG_PeekHardwareMsg(): produces correct
data for the JOURNALRECORD-hook (using EVENTMSG16 structure).
* [if1632/gdi.spec] [include/windows.h] [objects/metafile.c]
Introduced undocumented API function IsValidMetaFile(), plus a
minor fix in last patch of CopyMetaFile().
* [objects/gdiobj.c]
Removed a FIXME in IsGDIObject(): added magic word check.
Sun Aug 10 18:10:10 1996 Bruce Milner <Bruce.Milner@genetics.utah.edu>
* [controls/statuswin.c]
First pass at implementing the StatusWindow class.
* [include/commctrl.h]
Header file for common controls.
* [controls/widgets.c]
Added InitCommonControls().
* [if1632/comctl32.spec]
Add DrawStatusTextA, CreateStatusWindowA, InitCommonControls.
* [win32/findfile.c] [if1632/kernel32.spec]
Add FindNextFile32A, FindClose.
Modified FindFirstFile32A so it works with FindNextFile32A.
* [include/winbase.h]
Fixed WIN32_FIND_DATA structure member names.
Sat Aug 10 09:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/scroll.c]
Changed scrolling routines to benefit from DCE code update.
Thu Aug 8 18:05:09 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/file.c]
SearchPath* could get NULL for lastpart argument.
* [if1632/build-spec.txt] [documentation/debugging]
Varargs documentation added, debugging hints updated.
* [if1632/crtdll.spec][misc/crtdll.c][misc/Makefile.in]
Started to implement CRTDLL.
* [if1632/wsock32.spec]
Some thunks to standard libc functions (structures have the same
elements, but perhaps wrong offset due to packing).
* [include/kernel32.h][include/windows.h][win32/*.c][loader/main.c]
Merged kernel32.h into windows.h.
* [misc/lstr.c]
Enhanced FormatMessage().
* [misc/main.c] [if1632/kernel.spec] [include/windows.h]
GetVersion() updated to new naming standard.
Changed language handling to support language ids.
* [misc/shell.c]
Enhanced FindExecutable, so it finds files in the search path too.
* [win32/environment.c]
GetCommandLine* updated.
* [loader/resource.c] [loader/pe_resource.c]
FindResourceEx32* added.
Loading of messagetables added.
Language handling now uses Wine default language id.
diff --git a/objects/metafile.c b/objects/metafile.c
index 3c2ad1a..d3e21e3 100644
--- a/objects/metafile.c
+++ b/objects/metafile.c
@@ -25,9 +25,9 @@
* GetMetafile GDI.124 By Kenny MacDonald 30 Nov 94
*/
-HMETAFILE GetMetaFile(LPSTR lpFilename)
+HMETAFILE16 GetMetaFile(LPSTR lpFilename)
{
- HMETAFILE hmf;
+ HMETAFILE16 hmf;
METAHEADER *mh;
HFILE hFile;
DWORD size;
@@ -146,9 +146,9 @@
* CopyMetafile GDI.151 Niels de Carpentier, April 1996
*/
-HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename)
+HMETAFILE16 CopyMetaFile(HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename)
{
- HMETAFILE handle = 0;
+ HMETAFILE16 handle = 0;
METAHEADER *mh;
METAHEADER *mh2;
int hFile;
@@ -168,12 +168,9 @@
mh->mtType=1; /* disk file version stores 1 here */
i=_lwrite(hFile, (char *)mh, mh->mtSize * 2) ;
mh->mtType=j; /* restore old value [0 or 1] */
+ _lclose(hFile);
if (i == -1)
- {
- _lclose(hFile);
return 0;
- }
- _lclose(hFile);
}
else /* memory based metafile */
{
@@ -186,16 +183,35 @@
return handle;
}
+/******************************************************************
+ * IsValidMetaFile (GDI.410)
+ * (This is not exactly what windows does, see "Undoc Win")
+ */
+
+BOOL IsValidMetaFile(HMETAFILE16 hmf)
+{
+ BOOL resu=FALSE;
+ METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
+ if (mh)
+ if (mh->mtType == 1 || mh->mtType == 0)
+ if (mh->mtHeaderSize == MFHEADERSIZE/sizeof(INT16))
+ if (mh->mtVersion == MFVERSION)
+ resu=TRUE;
+ GlobalUnlock16(hmf);
+ dprintf_metafile(stddeb,"IsValidMetaFile %x => %d\n",hmf,resu);
+ return resu;
+}
+
/******************************************************************
* CloseMetafile GDI.126
*/
-HMETAFILE CloseMetaFile(HDC hdc)
+HMETAFILE16 CloseMetaFile(HDC hdc)
{
DC *dc;
METAHEADER *mh;
- HMETAFILE hmf;
+ HMETAFILE16 hmf;
HFILE hFile;
dprintf_metafile(stddeb,"CloseMetaFile\n");
@@ -248,7 +264,7 @@
* DeleteMetafile GDI.127
*/
-BOOL DeleteMetaFile(HMETAFILE hmf)
+BOOL DeleteMetaFile(HMETAFILE16 hmf)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
@@ -264,7 +280,7 @@
* PlayMetafile GDI.123
*/
-BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf)
+BOOL PlayMetaFile(HDC hdc, HMETAFILE16 hmf)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
METARECORD *mr;
@@ -307,7 +323,7 @@
* Niels de carpentier, april 1996
*/
-BOOL EnumMetaFile(HDC hdc, HMETAFILE hmf, MFENUMPROC16 lpEnumFunc,LPARAM lpData)
+BOOL EnumMetaFile(HDC hdc, HMETAFILE16 hmf, MFENUMPROC16 lpEnumFunc,LPARAM lpData)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
METARECORD *mr;
@@ -740,7 +756,7 @@
* Trade in a meta file object handle for a handle to the meta file memory
*/
-HANDLE GetMetaFileBits(HMETAFILE hmf)
+HANDLE GetMetaFileBits(HMETAFILE16 hmf)
{
dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: %04x\n", hmf);
@@ -753,7 +769,7 @@
* Trade in a meta file memory handle for a handle to a meta file object
*/
-HMETAFILE SetMetaFileBits(HANDLE hMem)
+HMETAFILE16 SetMetaFileBits(HANDLE hMem)
{
dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %04x\n", hMem);
@@ -764,7 +780,7 @@
* MF_WriteRecord
*/
-HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen)
+HMETAFILE16 MF_WriteRecord(HMETAFILE16 hmf, METARECORD *mr, WORD rlen)
{
DWORD len;
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
@@ -860,7 +876,7 @@
{
char buffer[8];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 3;
mr->rdFunction = func;
@@ -878,7 +894,7 @@
{
char buffer[8];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 4;
mr->rdFunction = func;
@@ -897,7 +913,7 @@
{
char buffer[10];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 5;
mr->rdFunction = func;
@@ -919,7 +935,7 @@
{
char buffer[14];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 7;
mr->rdFunction = func;
@@ -943,7 +959,7 @@
{
char buffer[18];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 9;
mr->rdFunction = func;
@@ -969,7 +985,7 @@
{
char buffer[22];
METARECORD *mr = (METARECORD *)&buffer;
- HMETAFILE handle;
+ HMETAFILE16 handle;
mr->rdSize = 11;
mr->rdFunction = func;
@@ -995,7 +1011,7 @@
BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush)
{
int index;
- HMETAFILE handle;
+ HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGBRUSH16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@@ -1039,7 +1055,7 @@
BITMAPINFO *info;
BITMAPINFOHEADER *infohdr;
int index;
- HMETAFILE handle;
+ HMETAFILE16 handle;
char buffer[sizeof(METARECORD)];
METAHEADER *mh;
@@ -1124,7 +1140,7 @@
BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen)
{
int index;
- HMETAFILE handle;
+ HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGPEN16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@@ -1161,7 +1177,7 @@
BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT16 *logfont)
{
int index;
- HMETAFILE handle;
+ HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGFONT16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@@ -1196,7 +1212,7 @@
*/
BOOL MF_TextOut(DC *dc, short x, short y, LPCSTR str, short count)
{
- HMETAFILE handle;
+ HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@@ -1225,7 +1241,7 @@
BOOL MF_ExtTextOut(DC *dc, short x, short y, UINT16 flags, const RECT16 *rect,
LPCSTR str, short count, const INT16 *lpDx)
{
- HMETAFILE handle;
+ HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@@ -1259,7 +1275,7 @@
*/
BOOL MF_MetaPoly(DC *dc, short func, LPPOINT16 pt, short count)
{
- HMETAFILE handle;
+ HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@@ -1287,7 +1303,7 @@
BOOL MF_BitBlt(DC *dcDest, short xDest, short yDest, short width,
short height, HDC hdcSrc, short xSrc, short ySrc, DWORD rop)
{
- HMETAFILE handle;
+ HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@@ -1339,7 +1355,7 @@
short heightDest, HDC hdcSrc, short xSrc, short ySrc,
short widthSrc, short heightSrc, DWORD rop)
{
- HMETAFILE handle;
+ HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;