Re: Win32Lib not showing WS_EX_WINDOWEDGE

new topic     » goto parent     » topic index » view thread      » older message » newer message

{{{ Jordah writes:

Hi EuMan,
Unfortunately, i'm back to win98 on my new laptop. Bythe time i used to
code in xp, i used to use 4.0 and received desired results without a
manifest. Its kinda funny, all control classes in user32.dll in XP use
themes by default(window,button).
Maybe, it would be a good idea to post your manifest file and the two
examples showing this for other users to check. AFAIK, 3.1/4.0 applications
made in other languages work great with XP.
BTW, Just to save me time. Could u paste the code snippets for
detecting which OS u use. i think this will be ideal for euwin win32GUI
library.

Hey Jordah,

And I thought you werent coding Win32lib anymore :)

I will need to construct a "small demo" showing the issue with the button controls I mentioned earlier but for your request, here is (not sure this is my latest edition) to collect information about .dll versions and the O/S they run on.

In fact Im sure this isnt the latest issue, I'll hunt for it. This doesnt detect the (sp) updates for 2K, XP etc.

Should give you an idea that its pretty straight forward and easy besides, knowing you, you'll pick thru it and update what I have here anyway.\

I have my own memory handling routines (found in my installer) "EuSup" so the below code could need an occasional mem_set I very quickly renamed myalloc/myfree back to allocate/free

I'll make a complete module including the define_c_func's, const. etc in a day or so and submit a "clean" user ready module for .dll and O/S version detection to RDS.

Here's what I have for now, Good luck!

Copyright 2002 Euman -> HW. Overman

global function allocate_string2(sequence s) atom mem mem = allocate(length(s) + 1) poke(mem, s) return mem end function

function GetFileVersionInfoSize(sequence FileName) atom pZero, pStr integer size pZero allocate(16) pStr = allocate_string2(FileName) size c_func(xGetFileVersionInfoSize,{pStr,pZero}) free(pStr) free(pZero) return size end function

function GetFileVersionInfo(sequence FileName) atom pInfo, pStr, success integer size sequence info size = GetFileVersionInfoSize(FileName) if not size then return -1 end if pStr allocate_string2(FileName) pInfo allocate(size) success = c_func(xGetFileVersionInfo,{pStr,0,size,pInf) free(pStr) if not success then free(pInfo) return -1 end if info peek({pInfo,size) free(pInfo) return info end function

function VerQueryValue(sequence info, sequence ValueName) atom pInfo, pValueName, ppValue, pLen, index, dat1, dat2, dat3, dat4 integer bool, size

size = length(info)+1 pInfo allocate(size) poke(pInfo, info) pValueName = allocate_string2(ValueName) ppValue allocate(16) pLen = allocate(16) bool = c_func(xVerQueryValue,{pInfo, pValueName,ppValue,pLen}) free(pInfo) free(pValueName) if not bool then free(ppValue) free(pLen) return -1 end if indexpeek4u(ppValue) dat1HIWORD(peek4u(index+8)) dat2=LOWORD(peek4u(index+8)) dat3=HIWORD(peek4u(index+12)) dat4=LOWORD(peek4u(index+12)) free(pLen) free(ppValue) return {dat1,dat2,dat3,dat4}

return sprint(dat1,dat2,dat3,dat4) end function

global function GetVersionStr(sequence FileName) object info sequence version info = GetFileVersionInfo(FileName) if atom(info) then return -1 end if version = VerQueryValue(info,"
") return version end function

global sequence kernel32_inf, comctl32_inf, user32_inf, gdi32_inf, lz32_inf, advapi32_inf

comctl32_inf = GetVersionStr("comctl32.dll") rem'd the others for message size "You get the idea"

atom testver, bad

if comctl32_inf[1] < 4 then if comctl32_inf[2] < 69 then bad=message_box("Incompatible CommCtl32.dll Version","Error",MB_ICONERROR) end if if getc(0) then abort(0) end if end if

OS Version

atom ptOS, val, major, minor, build, platf global sequence OS

ptOS = allocate( 148 ) poke4(ptOS,148) val c_func(OSVersion, {ptOS})

major = peek4u(ptOS+4) minor = peek4u(ptOS+8) build = peek4u(ptOS+12) platf = peek4u(ptOS+16)

if major = 3 then NT3.51

OS = "NT 3.51"

elsif major = 4 then 95,98,ME,NT4

if minor = 0 then if platf 1 then OS = "95" elsif platf 2 then OS = "NT 4.0" end if

elsif minor = 10 then OS = "98" elsif minor 90 then OS = "ME" end if

elsif major = 5 then 2k,XP,.Net Server

if minor = 0 then OS = "2000" elsif minor 1 then OS = "XP or .Net Server" end if end if

junk = message_box(sprintf( "Boolean: %d.%d", {peek4u(ptOS+4),peek4u(ptOS+8) ), "OSVersion",MB_ICONINFORMATION+MB_TASKMODAL ) free(ptOS)

regards THE EUMAN

--- Original Message From: <jordah at btopenworld.com> To: "EUforum" <EUforum at topica.com> Sent: Saturday, March 22, 2003 10:14 AM Subject: Re: Win32Lib not showing WS_EX_WINDOWEDGE

======== The Euphoria Mailing List ========

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu