• Alexandre Julliard's avatar
    Release 951226 · d7d4fdf8
    Alexandre Julliard authored
    Sat Dec 23 18:15:59 1995  Alexandre Julliard  <julliard@sunsite.unc.edu>
    
    	* [configure.in] [Makefile.in] [tools/install-sh]
    	New 'install' target installs Wine binary, library and man page.
    	Library is now more logically named libwine.a.
    	Split toolkit/ directory into library (for library code) and
    	libtest (for test programs).
    
    	* [controls/edit.c]
    	Quick hack to partially support EM_PASSWORD style (avoids
    	displaying your passwords on the screen when testing programs...)
    
    	* [configure.in] [controls/menu.c] [include/resource.h]
    	  [misc/commdlg.c] [misc/ole2nls.c] [misc/shell.c] [windows/msgbox.c]
    	Language is now a run-time option (wine -language xx).
    
    	* [debugger/dbg.y]
    	Dump some more debugging info on crash.
    
    	* [misc/profile.c]
    	Only consider ';' as a comment if it's the first non-blank
    	character on the line.
    
    	* [miscemu/dpmi.c]
    	More debugging info for real-mode callback.
    
    	* [objects/gdiobj.c]
    	Rewrote EnumObjects() to do the Right Thing.
    
    	* [resources/sysres*]
    	New directory containing system resources.
    
    Fri Dec 22 11:24:39 GMT 1995  John Harvey <john@division.co.uk>
    
    	* [win32/file.c] [win32/memory.c]
            Unixware doesn't have MAP_ANON ifdefed out for now.
    
    	* [misc/dos_fs.c]
            DOS_GetDosFileName didn't truncate paths starting ./ properly.
    
    	* [tools/build.c]
    	Produces assembly code that works with the unixware assembler.
    
    Wed Dec 20 22:22:29 +0100 1995  Morten Welinder <terra@diku.dk>
    
    	* [miscemu/instr.c]
    	INSTR_GetOperandAddr: 16-bit addresses should be masked to 16 bits.
    
    	* [misc/dos_fs.c]
    	DOS_readdir should always return directories, even if they don't
     	match the file name mask.
    
    Tue Dec 19 18:00:00 1995  Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
    	
    	* [misc/exec.c]
    	Give arguments to winhelp.
    
    	* [miscemu/int21.c]
    	Implemented Interrupt 21 AX=6C00 EXTENDED OPEN/CREATE.
    	Created function ExtendedOpenCreateFile.
    	Give for some Windows95 interrupts the return value 'not
    	implemented'.
    
    Sun Dec 17 16:51:56 EST 1995  Jim Peterson <jspeter@birch.ee.vt.edu>
    
    	* [include/kernel32.h] [include/windows.h]
    	Moved the typedefs for SYSTEMTIME and LPSYSTEMTIME from
     	include/kernel32.h to include/windows.h and declared the new Win32
     	API functions Sleep(), GetLocalTime(), and GetSystemTime().
      	Redefined INFINITE as 0xFFFFFFFF if WINELIB32.
    
    	* [rc/rc (new file)]
    	Created the shell script 'rc', which should simplify resource
     	compilation.
    
    	* [win32/environment.c]
    	Kludged around an undefined reference to wine_files.  This change
     	should be fixed some time.
    
    	* [win32/time.c] [if1632/kernel32.spec]
    	Added the functions GetSystemTime(), and Sleep().
    
    	* [miscemu/int21.c]
    	Renamed static function GetSystemTime to INT21_GetSystemTime to
     	avoid conflicts with the API function of the same name.
    
    	* [include/wintypes.h]
    	Added the SPFMT definition for printf statements.
    
    	* [misc/shell.c] [include/shell.h]
    	Changed ERROR_* defines to SHELL_ERROR_*, as they were conflicting
     	with the ones in include/winerror.h.  They should probably use the
     	versions in winerror.h, but I'm not certain, and that can be done
     	later.
    
    	* [windows/mdi.c]
    	Translated WM_MDIACTIVATE(?,(LOhwnd,HIhwnd)) messages to
     	WM_MDIACTIVATE(HIhwnd,LOhwnd) for WINELIB32.  The ? parameter
     	(boolean) was discarded with this translation.  Translated handler
     	of WM_MDISETMENU(ref,(loHMENU,hiHMENU)) to handle
     	WM_MDISETMENU(loHMENU, hiHMENU) messages in WINELIB32 (ref assumed
     	false, call DrawMenuBar() if desired).
    
    	* [*/*]
    	General explicit casts and more rigid typing to remove warnings.
    
    	* [include/winpos.h] [windows/winpos.c]
    	Changed return type of WINPOS_ChangeActiveWindow to BOOL.
    
    	* [include/commdlg.h] [misc/commdlg.c]
    	Added prototypes for ChooseColor(), CommDlgExtendedError(),
     	FindText() GetFileTitle(), GetOpenFileName(), GetSaveFileName(),
     	PrintDlg, and ReplaceText().
    	Renamed the CommDlgExtendError() function to CommDlgExtendedError().
    	Made GetFileTitle return a short, as per the API definition.
    
    	* [Makefile.in]
    	Added line to clean and distclean that removes temporaries from
     	the include directory.
    
    Sat Dec 16 19:39:14 MET 1995  Steffen Moeller <smoe0024@rz.uni-hildesheim.de>
    
    	* [controls/edit.c]
    	Almost rewrote EDIT_GetLineMsg.
    
    Sat Dec 16 13:51:48 MST 1995  Andrew Taylor <andrew@riscan.com>
    
    	* [windows/mdi.c]
    	Fixed MDITile() bug that occurs when 0 windows are present or all
    	windows are minimized.
    
    Wed Dec 12 23:30:00 1995  Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
    
    	* [misc/profile.c]
            Try harder to find files, especially in the working directory.
    	Look in $HOME/.wine too and create it there if it isn't found.
    d7d4fdf8
README.resources 4.14 KB
This is a short discussion of resources in WineLib. Introduction Resources are used to store dialogs, menus, bitmaps, icons, version information, strings, fonts, and accelerators. In a Win3.1 programming environment, there are three file formats for resources: - the RC script, which is human-readable and can be processed by a resource compiler - the .RES file, which is the output of the resource compiler - the .EXE and .DLL files, which store resources as a part of the NE file format For WineLib, only a part of this is supported. In particular, there is no .RES file, the executable is not a NE file (as it is a native Unix executable), and some resource types are not implemented: icons, version information, strings, and fonts. Building a WineLib application The build process assumes that the C source files and the resource script is available. At the moment, a single resource script is recommended. This script is processed by winerc: 1) the preprocessor is used to resolve symbolic style name (LBS_STANDARD, ...) into numbers. This involves processing windows.h 2) the unused parts of windows.h (type definitions) are removed. This would not be necessary if Wine's windows.h would use the RC_INVOKED macro. 3) winerc is invoked to create a binary representation of the resources. This representation is stored as C source code (arrays). 4) gcc is used to compile the generated C code. Now, each resource is available as a C array to the application. As the executable is not in the NE format, it is not possible to retrieve resource locations in the executable via name. Instead, the resources have to be referenced with their generated C array names. The linker then resolves these names in the compiled resource file. 5) The program sources are compiled and linked with the output of step 4. A sample build process is in toolkit/Makefile:hello3. Required changes to the program sources Because loading the resources from an instance handle is not possible, the *Indirect functions have to be used to load a resource. The C arrays can be directly passed to the *Indirect functions. So, instead of writing hMenu=LoadMenu(hInstance,"MAIN"); write hMenu=LoadMenuIndirect(hello3_MENU_MAIN.bytes); Fortunately, the Windows API has the following functions available: DialogBoxIndirect CreateDialogIndirect DialogBoxIndirectParam CreateDialogIndirectParam LoadMenuIndirect SetDIBitsToDevice Sample code is available in hello3.c. hello3res.c contains the corresponding resources. Keeping a common source Clearly, changing the sources is not very desirable, and suggestions how to reduce the amount of work are welcome. In the meantime, two approaches allow at least to remain a common source between the Win3.1 code and the WineLib code: 1) conditional compiles: When compiling a WineLib application, WINELIB is defined. This can be used to select Wine-specific code. 2) usage of winerc for Windows: The *Indirect functions are available on plain Win3.1, and the resource format is fully compatible. Thus, recompiling sources modified for WineLib on Win3.1 is possible and known to work. Open problems 1) Icons and cursors: For these resources, there is no *Indirect function documented. In addition, both are implemented by a set of two resources. This is the reason why they are not supported by winerc. 2) Accelerators: Although winerc supports accelerators, there is no LoadAcceleratorIndirect function. A work-around would be to define one. 3) Fonts: Font resources are not supported by Wine at all. 4) String tables: Although string tables are not supported by winerc, there is no reason not to add such support. Again, some indirect loading would be necessary. 5) API requires loading by name: At some places, the name of a resource is passed instead of a handle. The WNDCLASS structure contains the name of a menu resource, and the icon in a dialog box is referenced by its name. (Are there some more places?) Clearly, loading the resource by name would be highly desirable. The resource compiler currently creates a structure containing all resources defined in an RC file. However, it is not clear how WINELIB could find the location of this structure, especially, when there is more than one RC file.