在mfc中以基于单文档里画了个坐标并显示需要的图形,请问怎样修改使那个坐标随着窗口大小的改变而改变呢?

还有我在里面也添加了文本按钮等控件,让他们也随着窗口大小的改变到适应的位置,怎么做啊?谢谢,求大神啊!... 还有我在里面也添加了文本按钮等控件,让他们也随着窗口大小的改变到适应的位置,怎么做啊?
谢谢,求大神啊!
展开
 我来答
dut_wish
2012-04-24 · TA获得超过1634个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:505万
展开全部
第一个问题,例子的 加入
void CCoordinatesTestView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
m_Coordinates.SetCoordinates(cx/2,-1*(cy/2));
}
这样就是居中了,至于你要设到其他位置,就自己调整。,但是Y要把它×-1来翻转坐标

第二个问题,你可以做一个自己的包装类来容纳你所有的控件,打一个比方,你有3个控件
一个按钮CButton mButtonFirst;
一个文本CEdit mEditSecond;
一个进度条CProgress mProgressThird;
然后你写一个类
class ControlsWrap
{
//这个在OnSize(UINT nType, int cx, int cy) 里调用,把窗口大小传进来
public void rePosControls(int cx,int cy)
{
_rePosButtonFirst(cx,cy);
_rePosEditSecond(cx,cy);
_rePosProgressThird(cx,cy);
}

private void _rePosButtonFirst(int cx,int cy)
{
// 根据窗口大小调整你想要的按钮位置
}
private void _rePosEditSecond(int cx,int cy)
{
// 根据窗口大小调整你想要的编辑框位置
}
private void _rePosProgressThird(int cx,int cy)
{
// 根据窗口大小调整你想要的进度条位置
}
}
当然这种办法很土,但是够用了,要是自己设计一种布局可以更方便,就像Java的界面那样。
更多追问追答
追问
我单文档里面的控件不是用代码写的,我是建了一个base class 为 CFromView 的单文档对话框,要怎么实现呢?

还有,第一种办法只有那个十字随窗口变化,坐标还是不变啊,大神
追答
1,就在OnSize里面移动你的单文档对话框,通过cx ,cy计算出合适位置后
调用你的单文档对话框的MoveWindow方法,移到你要的位置去
2.
CCoordinates有两个方法,
一个是设置坐标交叉点的偏移,另一个是设置坐标系的偏移,你试试就知道了
SetCoordinates
SetCoordinatesOffset
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式