IViewObject2::GetColorSet and GetExtent

IViewObject2::GetColorSet allows a client to obtain an object's logical palette used during Draw, which the client can try to match as closely as possible when the object's image is considered background. For example, a client that displays multiple images in separate windows would consider the object shown in the foreground window to own the palette; all other objects would have to render using that same palette. If the object uses a particular palette, it should fill the LOGPALETTE structure pointed to by ppColorSet with the colors it would use if Draw were called with the rest of the arguments passed to GetColorSet. Objects that are not palette sensitive return S_FALSE. In general, the palette here is identical to what the object might pass to the Windows API functions SetPaletteEntries and CreatePalette.

IViewObject2::GetExtent, the function not found in IViewObject itself, fills the SIZEL structure with the object's natural size. The extents are always expressed in HIMETRIC units—not the MM_HIMETRIC mapping mode, but the same units used in that mode. In other words, both the horizontal and vertical extents returned from this function are positive values scaled according to 100 logical units per millimeter; on the screen, positive x is left, and positive y is down. (It is negative with the MM_HIMETRIC mapping mode.) Be careful that you use the correct units but not the mapping mode.