Hello! I'm trying to replace "default" Direct3D7 implementation with gorgeous Wine software (ddraw.dll/wined3d.dll). However initialization brings surprises. wined3d.dll tries to load opengl32.dll (it's correct I suppose). opengl32.dll calls GetSystemMetrics from user32.dll (it's probably correct) user32.dll tries to use ddraw.dll to calculate some parameters. Maybe it's correct but totally unexpected. Thus recursion of calls to WineDirect3DCreate is detected. The complete call stack is here: WINED3D.dll!InitAdapters(IWineD3DImpl * This=0x000b98a0) Line 4977 C WINED3D.dll!wined3d_init(IWineD3DImpl * wined3d=0x000b98a0, unsigned int version=7, IUnknown * parent=0x000b73a0) Line 5301 + 0x9 bytes C WINED3D.dll!WineDirect3DCreate(unsigned int version=7, IUnknown * parent=0x000b73a0) Line 91 + 0x11 bytes C ddraw.dll!657d9814() [Frames below may be incorrect and/or missing, no symbols loaded for ddraw.dll] ddraw.dll!657d9cab() user32.dll!_GetSystemMetrics@4() + 0x4b bytes opengl32.dll!_GLInitializeProcess@0() + 0x1b5 bytes opengl32.dll!_DllInitialize@12() + 0x44 bytes ntdll.dll!_LdrpCallInitRoutine@16() + 0x14 bytes ntdll.dll!_LdrpRunInitializeRoutines@4() + 0x205 bytes ntdll.dll!_LdrpLoadDll@24() - 0x1b8 bytes ntdll.dll!_LdrLoadDll@16() + 0x110 bytes kernel32.dll!_LoadLibraryExW@12() + 0xc8 bytes kernel32.dll!_LoadLibraryExA@12() + 0x1f bytes kernel32.dll!_LoadLibraryA@4() + 0x2d bytes WINED3D.dll!InitAdapters(IWineD3DImpl * This=0x000b8fe8) Line 4980 + 0xd bytes C WINED3D.dll!wined3d_init(IWineD3DImpl * wined3d=0x000b8fe8, unsigned int version=7, IUnknown * parent=0x000b7288) Line 5301 + 0x9 bytes C WINED3D.dll!WineDirect3DCreate(unsigned int version=7, IUnknown * parent=0x000b7288) Line 91 + 0x11 bytes C ddraw.dll!657d9814() ddraw.dll!657d9e01() shimeng.dll!_StubGetProcAddress@8() + 0x8f bytes Can anything be done with this behaviour? Thank you