GetDialogBaseUnits

This function returns the dialog box base units used by Windows to create dialog boxes. Both Windows and applications use these units to convert the width and height of dialog boxes and controls from dialog units, as specified in dialog box templates, to pixels, and vice versa.

At a Glance

Header file: Winuser.h
Windows CE versions: 1.0 and later

Syntax

LONG GetDialogBaseUnits( void );

Return Values

A 32-bit value that contains the dialog base units indicates success. 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.

Windows CE does not support any extended error values for this function.

Remarks

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 Also

HIWORD, LOWORD, MapDialogRect