Hi,
Well, let me answer some of your questions first. As you see in the documentation on MSDN, the third parameter is a *pointer* to a COLORREF type. We don't know what that is at this point, but we do know that since it's a pointer, we should pass either a bank or a type object and declare the paramter in the decls file with * (not % or $). As for the COLORREF type (which exists in Win32 but not Blitz, obviously), just click on the COLORREF link from the docs. That takes you to the definition, and lo and behold, we find that COLORREF is the exact same thing as a DWORD, and a DWORD is simply two WORDs, 4 bytes, or 32 bits. You can also see that the lowest byte stores the red value (0-255), the second lowest byte stores the green, the third the blue, and the fourth is not used here.
So an example, to pass yellow:
Declare the lpColorValues parameter as * (not %) in the decls.
Then in your program, do one of these:
cv=CreateBank(3)
PokeByte(cv, 3, $FF)
PokeByte(cv, 2, $FF)
type ColorValue : Field cv% : End Type
cv.ColorValue = New ColorValue
cv\cv = ($ff Shl 8) Or $ff ; Creates $0000FFFF = Yellow
...then when you call it, just pass cv as the third param.
THAT SAID...
By all means, try it out and see if you can get it to work (learning and stuff), but I don't think you should use this function for what you're doing. You'll end up changing the color of ALL your windows.
You'll have to use GDI to do what you want, like I mentioned briefly before. I should probably see the example of how I did it before to help help you though (it's at home)
<EDIT> Note, if the function didn't require a pointer as the third parameter, you could have just used an int% (since a COLORREF is just 4 bytes = int), but since it's a pointer, that why we have to "enclose" the int within a bank or type object.