Hi I’m trying to know the required width value for a text to fit a RECT.
So for now I’m trying to get the RECT dimensions according to a LPCWSTR, using the DT_CALCRECT format of DrawText().
Microsoft states that DT_CALCRECT
Determines the width and height of the rectangle. […] DrawText returns the height of the formatted text[…]
The following code
LPCWSTR textCheck = L"12345";
RECT rectCheck = { 0, 0, 0, 0 };
int check = DrawText(
hdc,
textCheck,
-1,
&rectCheck,
DT_CALCRECT);
returns the same value (16), textCheck being "12345" and "123456789".
Is it able to return only the height or I’m missing something?
Is DT_CALCRECT able to determines the width for itself but can’t return it?
I expected DT_CALCRECT able to return the width and the height.
>Solution :
Unless I’m misunderstanding something, if you just want the width needed to render a string (on a single line), combo DT_CALCRECT with DT_SINGLELINE and then inspect the rectCheck which is an out param.
LPCWSTR textCheck = L"12345";
RECT rectCheck = { 0, 0, 0, 0 };
int check = DrawText(
hdc,
textCheck ,
-1,
&rectCheck ,
DT_CALCRECT|DT_SINGLELINE);
int requiredWidth = rectCheck.right-rechCheck.left;