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
指定字体,就解决了这个问题
要制作静态标签,我可以使用:
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
指定字体,就解决了这个问题