The GetDialogBaseUnits function returns the system's dialog base units, which are the average width and height of characters in the system font. For dialog boxes that use the system font, you can use these values to convert between dialog template units, as specified in dialog box templates, and pixels. For dialog boxes that do not use the system font, the conversion from dialog template units to pixels depends on the font used by the dialog box.
For either type of dialog box, it is easier to use the MapDialogRect function to perform the conversion. MapDialogRect takes the font into account and correctly converts a rectangle from dialog template units into pixels.
LONG GetDialogBaseUnits(VOID)
This function has no parameters.
The return value is a 32-bit value that contains the dialog base units. The low-order word of the return value contains the horizontal dialog box base unit, and the high-order word contains the vertical dialog box base unit.
The horizontal base unit returned by GetDialogBaseUnits is equal to the average width, in pixels, of the characters in the system font; the vertical base unit is equal to the height, in pixels, of the font.
For a dialog box that does not use the system font, the base units are the average width and height, in pixels, of the characters in the dialog’s font. You can use the GetTextMetrics and GetTextExtentPoint32 functions to calculate these values for a selected font. However, by using the MapDialogRect function, you can avoid errors that might result if your calculations differ from those performed by the system.
Each horizontal base unit is equal to 4 horizontal dialog template units; each vertical base unit is equal to 8 vertical dialog template units. Therefore, to convert dialog template units to pixels, use the following formulas:
pixelX = (templateunitX * baseunitX) / 4 pixelY = (templateunitY * baseunitY) / 8
Similarly, to convert from pixels to dialog template units, use the following formulas:
templateunitX = (pixelX * 4) / baseunitX templateunitY = (pixelY * 8) / baseunitY
The multiplication is performed before the division to avoid rounding problems if base units are not divisible by 4 or 8.
See:
file: /Techref/os/win/api/win32/func/src/f30_12.htm, 3KB, , updated: 2001/6/26 11:21, local time: 2024/11/2 22:07,
3.144.107.215:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/techref/os/win/api/win32/func/src/f30_12.htm"> GetDialogBaseUnits</A> |
Did you find what you needed? |