【发布时间】:2016-04-20 21:45:06
【问题描述】:
我使用这一行来创建一个EDIT 控件:
hMyEdit = CreateWindowEx(
WS_EX_CLIENTEDGE,
L"EDIT",
L"",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT,
10,
10,
200,
25,
hParentWnd,
(HMENU)IDC_MY_EDIT,
hInst,
NULL
);
在它旁边,有一个COMBOBOX:
hMyCombo = CreateWindowEx(
WS_EX_CLIENTEDGE,
L"COMBOBOX",
L"",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | WS_VSCROLL | ES_LEFT | CBS_DROPDOWNLIST| CBS_HASSTRINGS,
220,
10,
90,
200,
hParentWnd,
(HMENU)IDC_MY_COMBO,
hInst, NULL
);
有两个问题我想不通:
如果我减小
COMBOBOX的高度(当前为 200),这也会限制实际下拉列表的最大高度。但是,没有下拉列表的控件的实际高度完全不受影响。COMBOBOX是否不应该超过下拉列表的给定高度?如何使
EDIT控件的高度与COMBOBOX控件的文本字段高度相同?
我找不到任何关于默认尺寸的文档,但我希望有一种适当的方法来调整控件的大小。
总结一下,我的问题是:
我应该将
COMBOBOX应用到哪个高度以允许下拉列表根据需要展开?我应该将
EDIT应用到哪个高度才能使COMBOBOX和EDIT控件的文本字段具有相同的高度?
【问题讨论】:
-
组合框是复合控件。有子 (WS_CHILD) 控件 - 您可以获取它们的大小。请参阅
GetWindow和GW_CHILD。 -
谢谢@i486!你能帮我解决我的问题吗?
-
在带有资源文件的对话框中创建类似的控件。然后阅读它们的实际尺寸(这是第二个问题)。请注意,在不同的 Windows 版本或屏幕方案/DPI 大小上,控件可能看起来非常不同。
-
@i486 我认为必须有一种更舒适的方法来确定默认控件大小。例如,
COMBOBOX如何获得文本字段的标准大小? -
@i486:您应该使用
GetComboBoxInfo(),而不是使用GetWindow(GW_CHILD)。它返回子控件的所有 HWND,以及编辑字段和箭头按钮的RECT坐标。
标签: c windows user-interface winapi