As Wine currently does not have a way to set captions, returning the default value should suffice for most applications.
It looks like Windows does not do error checking for the *value parameter.
For the computed properties, they return E_INVALIDARG when all the captions are set as Default. But they return S_OK if any of the caption settings have been modified, regardless of whether a valid *value parameter is passed.
I expected it to at least return the computed values for the default properties but this does not appear to be the case. I guess there's no reason to keep the checks for each member of the computed color struct? Perhaps keep the checks for E_INVALIDARG and S_OK? I haven't come across an application that uses the functions so I didn't implement them.
For the rest of the properties, the if (0) test was added just to show that it crashes with a NULL value. Also, if the wrong type is passed, the function does not crash on Windows and the value remains unchanged, but it returns S_OK.
-- v2: windows.media: Partially implement IClosedCaptionPropertiesStatics_get_RegionOpacity. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_RegionColor. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_BackgroundOpacity. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_BackgroundColor. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_FontEffect. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_FontStyle. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_FontSize. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_FontOpacity. windows.media: Partially implement IClosedCaptionPropertiesStatics_get_FontColor. windows.media/tests: Add Closed Caption Properties tests.