3个回答
展开全部
/*
* 以下代码用于演示将edit控件按行优先进行排列
* 同时每一行的控件将居中
* 按列优先进行排序及列居中可以参考行操作进行修改
*/
const int EDIT_MARGIN = 5; /*控件X间隔*/
const int EDIT_MARGIN_Y = 5; /*控件Y间隔*/
const int EDIT_NUM = 9; /*edit控件数*/
CEdit *edit[EDIT_NUM] = { NULL};
for (int i = 0; i < EDIT_NUM; ++i) {
edit[i] = (CEdit*)GetDlgItem(IDC_EDIT1 + i);
}
CRect clientRect; /*显示区域大小*/
CRect editRect; /*edit控件大小*/
GetClientRect(clientRect);
edit[0]->GetWindowRect(editRect);
/*计算横排可以放的edit的个数*/
/*加上两边的间隔,总的EDIT_MARGIN数是edit数+1*/
/*所以显示区域宽度-EDIT_MARGIN后剩下的空间就是*/
/*给edit和相同数目的EDIT_MARGIN的*/
int numX = (clientRect.Width() - EDIT_MARGIN)
/ (editRect.Width() + EDIT_MARGIN);
/*限制一行控件最大值*/
if (numX > EDIT_NUM) numX = EDIT_NUM;
/*因为控件放置不一定刚好,可能会有多余空间*/
/*这里选择将控件居中放置(也可以考虑将控件放大等)*/
int leftMargin = clientRect.Width() - (editRect.Width() + EDIT_MARGIN) * numX;
leftMargin += EDIT_MARGIN; /*回收左边的间隔*/
leftMargin /= 2; /*剩余间隔左右两边平分*/
int left = leftMargin; /*控件X位置*/
int top = EDIT_MARGIN_Y; /*控件Y位置*/
for (int i = 0; i < EDIT_NUM; ++i) {
left = leftMargin + (i % numX) * (editRect.Width() + EDIT_MARGIN);
top = EDIT_MARGIN_Y + (i / numX) * (editRect.Height() + EDIT_MARGIN_Y);
edit[i]->MoveWindow(left, top, editRect.Width(), editRect.Height());
}
展开全部
MFC资源编辑器中,对话框编辑界面上,可以按住Ctrl键实现控件多选。
选中多个控件后,鼠标右键菜单,有Align Left / Align Top等选项,可以实现对齐。
选中多个控件后,鼠标右键菜单,有Align Left / Align Top等选项,可以实现对齐。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
视图->工具栏->对话框编辑器,打开对话框编辑器里面有很多按钮可以完成你要的对齐效果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询