![]() |
#2
多布斯的喵喵2011-09-17 12:47
|

void CMy6_1View::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//获取滑块值
dlgRange=pAdjustDlg->m_slide1.GetPos();
dlgTilt=(pAdjustDlg->m_slide2.GetPos()*90)/100;
dlgAzimuth=((pAdjustDlg->m_slide3.GetPos()-50)*180)/50;
if(dlgRange>50)
{
geMutiple=((dlgRange-50)/10.0+1.0)*10; //计算缩小的倍数
}
else if (dlgRange<50)
{
geMutiple=(10.0/((50-dlgRange)+10))*0.1; //计算放大倍数
}
else
{
geMutiple=1.0;
}
BOOL m_geTimer;// m_geTimer用来控制Timer()函数
m_geTimer=pAdjustDlg->IsTimer;//判断是否停止调整操作
if(m_geTimer==FALSE)
{
KillTimer(1);//关闭计时器
}
m_geCamera.SetRange(geMutiple*oldRange);//重新设置当前视高
m_geCamera.SetTilt((double)dlgTilt);//重新设置当前倾斜角
m_geCamera.SetAzimuth((double)dlgAzimuth);//重新设置当前方位视角
m_geApplication.SetCamera(m_geCamera,1.5);//刷新视图
CView::OnTimer(nIDEvent);
}
googleearth衍生软件开发部分代码——原书代码{
// TODO: Add your message handler code here and/or call default
//获取滑块值
dlgRange=pAdjustDlg->m_slide1.GetPos();
dlgTilt=(pAdjustDlg->m_slide2.GetPos()*90)/100;
dlgAzimuth=((pAdjustDlg->m_slide3.GetPos()-50)*180)/50;
if(dlgRange>50)
{
geMutiple=((dlgRange-50)/10.0+1.0)*10; //计算缩小的倍数
}
else if (dlgRange<50)
{
geMutiple=(10.0/((50-dlgRange)+10))*0.1; //计算放大倍数
}
else
{
geMutiple=1.0;
}
BOOL m_geTimer;// m_geTimer用来控制Timer()函数
m_geTimer=pAdjustDlg->IsTimer;//判断是否停止调整操作
if(m_geTimer==FALSE)
{
KillTimer(1);//关闭计时器
}
m_geCamera.SetRange(geMutiple*oldRange);//重新设置当前视高
m_geCamera.SetTilt((double)dlgTilt);//重新设置当前倾斜角
m_geCamera.SetAzimuth((double)dlgAzimuth);//重新设置当前方位视角
m_geApplication.SetCamera(m_geCamera,1.5);//刷新视图
CView::OnTimer(nIDEvent);
}
这仅仅是其中一个函数,仅看部分,应该非常难懂……
它老是弹东西出来,应该是定时器的问题
我把定时器部分的代码屏了,就不弹东西了(屏的就是我传上来给大家看得着部分),但是连带的功能也不能实现了
我就是照书打的,就是运行时老弹东西
我修改定时器时间,它弹得就慢,不是定时器问题是什么
是那种隔所定时间它就弹一会的那种
能帮我解决问题得话,感激不尽啊!!!!!!