我正在使用以下代码创建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个声望。好吧,想象一下在上/下按钮左边缘的垂直线。它的颜色和边框一样,所以我可以认为它是边界的一部分。
答案 0 :(得分:0)
如果未正确处理WM_CTLCOLOREDIT消息,则可能会发生这种情况。例如,返回了无效的画笔。