注册 登录
编程论坛 VC++/MFC

帮忙检查这部分代码有错不?难度相当大……(GOOGLE EARTH)

多布斯的喵喵 发布于 2011-09-11 21:23, 364 次点击
程序代码:
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衍生软件开发部分代码——原书代码
这仅仅是其中一个函数,仅看部分,应该非常难懂……
它老是弹东西出来,应该是定时器的问题
我把定时器部分的代码屏了,就不弹东西了(屏的就是我传上来给大家看得着部分),但是连带的功能也不能实现了
我就是照书打的,就是运行时老弹东西
我修改定时器时间,它弹得就慢,不是定时器问题是什么
是那种隔所定时间它就弹一会的那种
能帮我解决问题得话,感激不尽啊!!!!!!
1 回复
#2
多布斯的喵喵2011-09-17 12:47
程序天下 google earth api
就是这本书上的东西啊
第282 页
1