我正在使用以下代码创建一个Edit和一个UpDown控件:
procedure TForm1.CreateWnd;
begin
inherited;
Edit1 := CreateWindowEx (WS_EX_CLIENTEDGE, 'EDIT', '',
WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL,
10, 10, 100, 24, Handle, 0, hInstance, nil);
UpDown1 := CreateWindowEx (0, UPDOWN_CLASS, nil,
WS_VISIBLE or WS_CHILD or UDS_ALIGNRIGHT or UDS_ARROWKEYS
or UDS_NOTHOUSANDS or UDS_HOTTRACK or UDS_SETBUDDYINT,
0, 0, 0, 0, Handle, 0, hInstance, nil);
SendMessage (UpDown1, UDM_SETBUDDY, Edit1, 0);
end;编辑看起来像是有一个3D边框,而UpDown没有。

更新:(部分复制/粘贴自下面的评论)
从编辑中删除WS_EX_CLIENTEDGE会使它看起来就像一个填充的白色矩形(没有边框)。而且,现在编辑中的文本看起来太高了,所以我必须处理WM_NCCALCSIZE消息或任何修复它的方法。

如果然后添加WS_BORDER标志,结果几乎是所需的,只是灰颜色比需要的深,然后在表单中的某些用户活动(包括用鼠标光标悬停编辑)之后,边框的一个不必要的垂直部分出现在UpDown控件的左侧。
第三张截图要求至少有10个声誉才能发布。好吧,想象一下在上/下按钮的左边边缘有一条垂直线。它的颜色和边框是一样的,所以我可以假设它是边框的一部分。
发布于 2019-06-27 14:27:53
当WM_CTLCOLOREDIT消息处理不当时,可能会发生这种情况。例如,返回无效的画笔。
https://stackoverflow.com/questions/44726104
复制相似问题