Making a system DLL unavailable (problem with COMMCTRL)

Eric Pouech pouech-eric at wanadoo.fr
Sun May 30 13:17:21 CDT 2004


Samuel Audet a écrit :
> Hello,
> 
> I have a Windows 3.1 application here that uses the OWL library.  I have
> problems running it properly, and I have found the following:
> http://www.xploiter.com/programming/c/borland/3031.html
> 
> Looking at what wine outputs when I use "WINEDEBUG=dll" or loaddll, I 
> see that my program tries to load commctrl.dll and always succeeds.  The 
> problem is, I want it not to succeed, since AFAIK, 16 bit COMMCTRL 
> functionality is not implemented in WINE, and the OWL library has a 
> backup plan where it emulates some of the controls (like described on 
> the site above) when it can't find COMMCTRL, which is what it does in 
> Windows 2000 or XP for example.
> 
> I have confirmed that the COMMCTRL is at the source of the problem by
> using one from a Windows 98 installation.  Dialogs that are not showing
> using WINE's builtin COMMCTRL are now showing (although they are having 
> sizing problems... anybody might know why?).
> 
> Is there like a "disable" option in the [DllOverrides] section?  Or some
> other way to disable a system DLL? I can't seem to just be able to
> "remove" commctrl.dll since even 32 bits builtin DLL (in this case
> comctl32.dll) require the 16 bit counterpart.  In this case, when 
> comdlg32 tries to load, it loads comctl32 and fails because it can't 
> load commctrl.  I don't think it's a good idea to make 32 bits DLL be 
> dependent of their 16 bit counterpart.
one of the things you could try (but that's risky) is to compile wine 
twice. First time with standard option, second time with disabling 
compilation of 16 bit part. Then use the commctrl DLL from the second 
compilation in the first compilation. But you need to do everything by hand.
The best solution anyhow is to understand why Wine's commctrl in 16 bit 
fails and fix it.

A+



More information about the wine-devel mailing list