做界面时使两控件对齐的方法

原创 2004年09月22日 18:04:00

       大家都知道,VC界面编辑器中使用的尺寸不是像素,具体是怎么来的我也不知道,总之界面编程器中的1个单位不等于1像素,他们之间有个比例,这个比例还不是整数,是个浮点数,而且精度还很高!我不知道VC为什么要这样做,但既然别人已经这样做了,我们只有想办法解决问题,出现的问题如下,举几个例子:

只说垂直上面的问题,水平上面的一样。
一:两个控件,如group box,如果他们顶边不对齐,那么可能他们的底边无法对齐,比如他们底边相差1像素的话,就是这样的,因为不管你移动控件也好,增减控件高度也好,他们的步长是编辑器的1单位,这个1单位大于1像素。

二:两个列表框(report),如果某一个列表框最后一项刚好完全显示出来,那么另一个列表框(如果他们高度不相等的话)要想也使最后一项刚好完全显示出来是非常困难的。

当然,我上面说的不是绝对无法解决,例如可以使两控件的高度差增大,当高度差大到一定程度的时候,
这种比例造成的误差自然会拆回到起点,这样就行了,比如说目前我正在使用的两个列表框(report),一个高111,一个高172(都是编辑器单位,9号宋体),他们的最后一项宽度刚好一样。

       上面的办法当然非常的不理想,由于不知道比例是多少,所以只有穷举来找拆回点,而且既然是界面编程,拿上面的例子来说,如果界面要求第一个列表框高111,而第二个要大于111而小172的话,就没有办法使最后一项所占高相等了!

       既然不能通过界面编程器来达到绝对对齐,那么只有用别的方法了,好在MFC提供了MoveWindow,这也可能是VC界面编辑器中使用相对粗糙的位置定位方法吧。具体方法就是在初始化函数,如对话框的OnInitDialog函数中,先取得要移动的控件的窗口位置数据,再计算移动后的窗口位置,最后是调用MoveWindow,如下:

CRect rect;
GetDlgItem(IDC_XXXX)->GetWindowRect(rect);
rect.OffsetRect(0, +/-1); //这里一般是正负1,大于正负1的时候可以通过界面编程器移动,不用在这里麻烦
ScreenToClient(rect);
GetDlgItem(IDC_XXXX)->MoveWindow(rect);

delphi中控件位置及自动排版的问题

1、autosize设置为true,搭配align,自行调整窗体布局。        窗体高度老是算不对——因为子控件高度是动态变化的。       ——最后只能取消autosize,自行计算。 ...
  • Avan_Lau
  • Avan_Lau
  • 2011年12月06日 10:33
  • 3921

C#如何设置控件水平对齐,垂直对齐

如果要设置一些控件垂直对齐,点击这个按钮   如果要设置水平对齐,则点击这个按钮,选中控件之后点击左对齐(多个按钮都试下吧,总归能对齐到你要的效果的)...
  • acetaohai123123
  • acetaohai123123
  • 2017年10月17日 21:53
  • 584

MFC控件的外观编辑

VC++ MFC 按钮的全部样式Style转载地址:http://www.cnblogs.com/lujin49/p/4691107.html Button Style BS_3STATE 与复选...
  • xuanyuanlei1020
  • xuanyuanlei1020
  • 2016年09月19日 14:22
  • 2608

MFC控件使用说明书

VC++控件工具箱: 2 按钮(Button):用来接收用户的命令,应用程序在接收到用户命令后,通常需要进行一些后台工作。按钮可以响应单击或双击动作,在按钮接收到鼠标动作后,向其父窗口发送...
  • miko_xiaoming
  • miko_xiaoming
  • 2015年08月14日 09:23
  • 3340

RelativeLayout里面各个控件对齐问题

举例 xml文件如下所示 http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"   ...
  • ylj15503473366
  • ylj15503473366
  • 2013年07月27日 11:14
  • 11823

RelativeLayout控件居中详细解析(可能是最完美的方法)

在RelativeLayout中设置控件全部居中,需要注意在父布局的一些细节设置即可,现在给出完美的解决方法,先看实例: ...
  • mvpstevenlin
  • mvpstevenlin
  • 2016年05月18日 16:45
  • 8393

MFC控件入门到精炼

MFC入门到精练 使用Windows标准控件 我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。在Visual C++中,可以使用的控件分成三类: ...
  • cherish_2012
  • cherish_2012
  • 2014年03月13日 18:14
  • 7986

以ListBox为例谈谈控件里字符串的对齐办法

原文地址:http://blog.csdn.net/clever101/article/details/2808790 一般往ListBox等控件里插入字符串后对符串对得都不是很齐,如下图的Li...
  • WUYUAN2011WOAINI
  • WUYUAN2011WOAINI
  • 2012年10月22日 22:39
  • 2073

android控件的对齐方式

android中有个比较好用的布局,相对布局,常用属性如下:android:layout_above 将该控件的底部至于给定ID的控件之上 android:layout_below 将该控件的顶部至于...
  • Sindyue
  • Sindyue
  • 2016年03月24日 15:28
  • 1641

android基本界面控件

转来自己看的,下面是从不同的网址转来的。 五、基本界面控件 大多数的界面控件都在android.view和android.widget包中,android.view.View为...
  • wuxingdepiaoying1991
  • wuxingdepiaoying1991
  • 2013年05月11日 15:53
  • 1299
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:做界面时使两控件对齐的方法
举报原因:
原因补充:

(最多只允许输入30个字)