/** DialogControl::getTextSizeDlg() * * Gets the size (width and height) in dialog units for any given string. * * Since dialog units only have meaning for a specific dialog, normally the * dialog units are calculated using the font of the dialog. Optionally, this * method will calculate the dialog units using a specified font. * * @param text The string whose size is needed. * * @param fontName Optional. If specified, use this font to calculate the * size. The default is to use the font of the owner * dialog of the dialog control. This would be the normal * usage. * * @param fontSize Optional. If specified, use this font size with * fontName to calculate the size. The default if omitted * is 8. This arg is ignored if fontName is omitted. * * @param hwndFontSrc Optional. Use this window's font to calculate the size. * This arg is always ignored if fontName is specified. * * @return A .Size object representing the area (width and height,) in dialog * units, needed for the specified string. * * @note This method, mapped to a dialog control object, does not really make * sense. It, and its convoluted optional arguments, are maintained * only for backward compatibility. Its use should be strongly * discouraged. */ RexxMethod5(RexxObjectPtr, dlgctrl_getTextSizeDlg, CSTRING, text, OPTIONAL_CSTRING, fontName, OPTIONAL_uint32_t, fontSize, OPTIONAL_POINTERSTRING, hwndFontSrc, CSELF, pCSelf) { HWND hwndSrc = NULL; if ( argumentExists(2) ) { if ( argumentOmitted(3) ) { fontSize = DEFAULT_FONTSIZE; } } else if ( argumentExists(4) ) { hwndSrc = (HWND)hwndFontSrc; if ( hwndFontSrc == NULL ) { nullObjectException(context->threadContext, "window handle", 4); return NULLOBJECT; } } SIZE textSize = {0}; RXCA2T(text); RXCA2T(fontName); if ( getTextSize(context, textT, fontNameT, fontSize, hwndSrc, getDCownerDlg(pCSelf), &textSize) ) { return rxNewSize(context, textSize.cx, textSize.cy); } return NULLOBJECT; }
void nullObjectException(RexxThreadContext *c, CSTRING name) { nullObjectException(c, name, 0); }