Jassert in juce demo

I’m getting an assert while running the demo
drag and drop demo, just dragging an element somewhere

the assert is

// if the component's not opaque, this won't draw properly unless the platform can support this jassert (Desktop::canUseSemiTransparentWindows() || component->isOpaque());

in juce_win32_Windowing.cpp line 1363

lastest git commit

without the assert I get access violation at line 275,
updateLayeredWindow is NULL because getprocaddress is never executed

I’ve tried a breakpoint in Desktop::canUseSemiTransparentWindows but I never reach it for some reason
I’m using vs2010 on winxp 64bit and I should have UpdateLayeredWindow in user32

…maybe I’m being naive, but does that exist??

…maybe I’m being naive, but does that exist??[/quote]
It does. Still in use by some composers with large sample libraries that haven’t gone over to Win7 yet (just for example).

Ok… so can you see where it’s failing? Is it the GetModuleHandle or GetProcAddress that fails? In your installation perhaps the module is called “user64.dll” or something?

still user32 but I’m compiling for 32bit, winxp 64 shares codebase with windows 2003

so think 32bit mode of windows xp 64 as like of windows 2003 32bit

I put a breakpoint in Desktop::canUseSemiTransparentWindows but it’s never reached

The assertion can’t fail unless that function has returned false, so it must be getting called.

I’ve finally found the problem:
juce_IsRunningInWine()

I had HKCU\Software\Wine because I ran reactos task manager, I never hit

HMODULE user32Mod = GetModuleHandle (_T("user32.dll")); updateLayeredWindow = (UpdateLayeredWinFunc) GetProcAddress (user32Mod, "UpdateLayeredWindow");

I hope there is better way to detect wine

I think something like

bool juce_IsRunningInWine()
{
    HMODULE ntdllMod = GetModuleHandle (_T("ntdll.dll"));

    if (ntdllMod && GetProcAddress (ntdllMod, "wine_get_version"))
        return true;
    return false;
}

Ah! I see… Thanks for chasing that up, and excellent suggestion, thank-you!