windows – 对齐文本框

我有一些
data output text boxes(文本框没有边框,背景与窗口的其余部分相同),我正在尝试与标准的编辑控件旋转按钮对齐,以表示一列数字,其中一个可以编辑:

我可以在Delphi / C Builder表单设计器中手动对齐这些,但是当我在不同版本的Windows上或在不同的DPI上查看表单时,文本不再是右对齐的,可能是因为旋转按钮的不同间距,边界等

我可以使用EM_GETMARGINS来确定旋转按钮的宽度,但是如何确定编辑控件的边距和边框的大小?我已经尝试了EM_POSFROMCHAR,ClientToScreen,GetSystemMetrics(SM_CXBORDER),GetSystemMetrics(SM_CXEDGE)和GetThemeMargins的各种组合,但到目前为止,我找不到一个有效且有意义的组合.

更多细节:

>环境是Delphi / C Builder XE2.
>数据输出控件是带有BorderStyle bsNone的TEdits.
>编辑旋转按钮是TJvSpinEdit.从查看其来源,它使用EM_SETMARGINS为其旋转按钮留出空间.

最佳答案 使用Win32 API GetWindowRect()和GetClientRect()方法.边界将是两个矩形之间的差异.但这只会让你接近边界.客户区内可能有额外的间距.

点赞