win32 c ++ Я хочу вставить элемент управления EDIT сразу после ТЕКСТА метки STATIC - PullRequest
0 голосов
/ 11 октября 2019

Для создания метки STATIC я могу использовать:

            HWND hwnd_ques=CreateWindow(
                TEXT("STATIC"),
                TEXT("Yao happy swallow is"),
                WS_VISIBLE | WS_CHILD,
                10,
                70,
                180,
                30,
                hwnd,
                NULL,
                (HINSTANCE)GetWindowLongPtr(hwnd, GWL_HINSTANCE),
                NULL);

После вызова CreateWindow я использовал WM_SETFONT msg, чтобы установить шрифт метки и размер шрифта (который работал успешно):

            SendMessage(hwnd_ques, WM_SETFONT, (WPARAM)font1, static_cast<LPARAM>(MAKELONG(TRUE, 0)));

//definition of font1 is not shown here but it worked successfully

Однако я хочу вставить элемент управления EDIT сразу после TEXT метки STATIC, то есть я сделаю так, чтобы ширина метки соответствовала ширине его текста, и назначуX ПОЗИЦИЯ РЕДАКТИРОВАНИЯ в соответствии с положением и шириной этикетки. если я укажу ширину метки вручную, он не сможет убедиться, что ширина метки точно точно соответствует ширине текста , потому что я на самом деле не знаю ширину текста этой метки.

Интересно, как я могу сделать ширину метки ТОЛЬКО ТОЧНОЙ шириной текста . Возможно, я смогу получить ширину текста , зная содержание текста, шрифт и размер шрифта. После получения ширины текста , затем я могу повернуть назад, чтобы установить ширину этикетки.

-

НАЗНАЧЕНИЕ

Iхотите вставить элемент управления EDIT сразу после TEXT метки STATIC

-

EDIT

Поискал в интернете и там написано GetTextExtentPoint32

SIZE textSize;
GetTextExtentPoint32(GetDC(hwnd), text, strlen(text), &textSize);

Но где я могу указать размер шрифта / шрифта в этой функции?

1 Ответ

1 голос
/ 11 октября 2019

Используя функцию GetTextExtentPoint32, как показано ниже:

SIZE textSize;
GetTextExtentPoint32(GetDC(hwnd), text, strlen(text), &textSize);

И используя SelectFont для указания шрифта ранее, эта проблема решена.

...