win32 c++ 我想在 STATIC 标签的 TEXT 之后直接插入一个 EDIT 控件

win32 c++ I want to insert an EDIT control straight after the TEXT of the STATIC label

要制作静态标签,我可以使用:

            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

但是,我想在 STATIC 标签的 TEXT 之后直接插入一个 EDIT 控件,也就是说,我将标签宽度适合其文本宽度,并根据标签位置和宽度分配编辑的 X 位置。如果我手动指定标签宽度,它不能确保 标签宽度恰好适合文本宽度 因为我实际上不知道 文本宽度 那个标签。

我想知道 如何才能使标签宽度恰好适合其文本宽度。也许我可以 得到文本宽度 因为知道文本内容、字体和字体大小。 获得文本宽度后然后我可以回过头来设置标签的宽度。

-

目的

我想在 STATIC 标签的 TEXT 之后 直接插入一个 EDIT 控件

-

编辑

上网查了下说用GetTextExtentPoint32

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

但是在这个函数中我可以在哪里指定font/fontsize呢?

通过使用如下函数 GetTextExtentPoint32

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

之前用SelectFont指定字体,就解决了这个问题