在mfc中以基于单文档里画了个坐标并显示需要的图形,请问怎样修改使那个坐标随着窗口大小的改变而改变呢?
还有我在里面也添加了文本按钮等控件,让他们也随着窗口大小的改变到适应的位置,怎么做啊?谢谢,求大神啊!...
还有我在里面也添加了文本按钮等控件,让他们也随着窗口大小的改变到适应的位置,怎么做啊?
谢谢,求大神啊! 展开
谢谢,求大神啊! 展开
展开全部
第一个问题,例子的 加入
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的界面那样。
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询