【发布时间】:2011-05-12 04:36:29
【问题描述】:
我有一个由编辑框和下拉按钮组成的复合视觉控件。下拉按钮不是窗口控件,而是绘制在编辑框上。我通过以下调用限制编辑的宽度:
SendMessage(Handle, EM_SETMARGINS, EC_RIGHTMARGIN,
(DropDownButtonWidth + 2) shl 16);
它在 Windows XP 下可以正常工作,但在 Windows 7 下无法正常工作。在后一种情况下,当焦点编辑框重叠下拉按钮并擦除其图像时。
在两种操作系统下限制编辑框矩形的正确方法是什么?
PS:我也尝试了另一种方法:
SendMessage(Handle, EM_GETRECT, 0, LongInt(@Loc));
Loc.Bottom := ClientHeight + 1;
Loc.Right := ClientWidth - FButton.Width - 2;
Loc.Top := 0;
Loc.Left := 0;
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@Loc));
但它也不适用于 Windows 7。
【问题讨论】:
标签: windows delphi winapi user-interface windows-7