VC++之随Formview窗口变化调整控件大小 100

我在网上看了一个VC++之随Formview窗口变化调整控件大小,说在onsize函数中加入下面的代码,但是总是在rect.left=rect.left*cx/m_rec... 我在网上看了一个VC++之随Formview窗口变化调整控件大小,说在onsize函数中加入下面的代码,但是总是在 rect.left=rect.left*cx/m_rect.Width();报错,我看了一下是因为m_rect.Width()为0,m_rect中所有的值都为0,怎么会为0呢?
下面是我的代码,其中m_rect为类的变量用于盛放尺寸。
void CRunSelectView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

if(!IsWindowVisible())
return;
if(m_rect && m_timeendctrl.m_hWnd != NULL)
{

CRect rect; //获取控件变化前大小
GetWindowRect(&rect);

ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标

rect.left=rect.left * cx/m_rect.Width();
rect.right=rect.right* cx/m_rect.Width();
rect.top=rect.top * cy/m_rect.Height();
rect.bottom=rect.bottom * cy/m_rect.Height();

MoveWindow(rect);//设置控件大小
}
GetClientRect(&m_rect);
}
void CRunSelectView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class
GetClientRect(&m_rect);

}
展开
 我来答
wangpaishi
2013-06-18 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:757万
展开全部
是文档视图啊,要是Dialog倒有个现成的类库可以使用
http://www.codeproject.com/Articles/568/CResizableDialog

要是不能直接使用,修改修改应该也可以,FormView嘛

有时候就那样,宽带高度会是0的,特别在刚开始创建显示控件的时候

我直接来了个 if (0 == width) return; if (0 == height) return;
或者 if ((width < 10) || (height < 10)) return; 不干活,窗口不可能一直是那么小,所以可视区域那么小的话,索性什么都不干好了,歪道,你且看给有能解决的吧

反正我在C#中,自绘控件,会碰到这种情况,也是想根据控件宽高度,计算绘图位置和大小的

语言只是编程语言,但是控件是系统控件的,这个应该不是语言的问题
匿名用户
2013-06-18
展开全部
::OnSize(UINT nType, int cx, int cy)最开始添加一句:GetClientRect(&m_rect);就可以了。
追问
如果一开始就加上GetClientRect(&m_rect);那么就失去意义了,因为m_rect存的是界面上次的值,如果一开始就加上那就每次都是新值了
追答
m_rect_last=m_rect;GetClientRect(&m_rect);那你就不应该用m_rect嘛,用m_rect_last不就完了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mayunjiang8103
推荐于2018-04-10 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:246
采纳率:100%
帮助的人:140万
展开全部
GetWindowRect换成GetClientRect试试
追问
CRect rect;   //获取控件变化前大小
GetWindowRect(&rect);

ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
这三句就相当于GetClientRect了,而且GetClientRect只是改变rect的大小,不管m_rect.
追答
m_rect.Width()为0,那么你就用横坐标自己算出一个宽度
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式