The following code is included in the INIT of a container from Tim Hockin's ScrollPanel classes located in the Files section. I can't say that this is original or if it's code that I've added to solve color problems under certain Windows schemes. This code runs fine on my Win95 system. During some multiple access testing on a Win98 machine, it errored off. I see one possible flaw is that an error code is returned, but never tested before the values in a passed parameter are utilitzed. When I RegEdit the Win98 computer, there is no Color Folder anywhere in any of the hives. My question, if anyone knows, Can I do something to "install" the folder on the Win98 computer, or did it get eliminated/replaced by some other technique in Win98?
LOCAL oReg, lcColor, lnR, lnG, lnB
IF (TYPE("oApp.oReg") = 'U')
oReg = NewObject("Registry","Registry.vcx")
ELSE
oReg = oApp.oReg
ENDIF
DODEFAULT()
* Face
lnError = oReg.GetRegKey("ButtonFace", @lcColor, ;
"Control Panel\Colors", ;
HKEY_CURRENT_USER)
lnR = VAL(lcColor)
lnG = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 1)))
lnB = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 2)))
THIS.BackColor = RGB(lnR, lnG, lnB)
* Highlights
lnError = oReg.GetRegKey("ButtonHilight", @lcColor, ;
"Control Panel\Colors", ;
HKEY_CURRENT_USER)
lnR = VAL(lcColor)
lnG = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 1)))
lnB = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 2)))
THIS.Hilite = RGB(lnR, lnG, lnB)
THIS.hiliteLeft.BorderColor = THIS.Hilite
THIS.hiliteTop.Bordercolor = THIS.Hilite
* Shadows
lnError = oReg.GetRegKey("ButtonShadow", @lcColor, ;
"Control Panel\Colors", ;
HKEY_CURRENT_USER)
lnR = VAL(lcColor)
lnG = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 1)))
lnB = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 2)))
THIS.Shadow = RGB(lnR, lnG, lnB)
THIS.shadowRight.BorderColor = THIS.Shadow
THIS.shadowBottom.Bordercolor = THIS.Shadow
* Dark Shadows
lnError = oReg.GetRegKey("ButtonDkShadow", @lcColor, ;
"Control Panel\Colors", ;
HKEY_CURRENT_USER)
lnR = VAL(lcColor)
lnG = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 1)))
lnB = VAL(SUBSTR(lcColor, AT_C(" ", lcColor, 2)))
THIS.DkShadow = RGB(lnR, lnG, lnB)
THIS.borderRight.BorderColor = THIS.DkShadow
THIS.borderBottom.Bordercolor = THIS.DkShadow
oReg = .NULL.
TIA
Mike