| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:请高手帮忙改正这个程序,问老师他却叫我问微软,郁闷
只看楼主 加入收藏
永恒VC
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-12-3
收藏
 问题点数:0 回复次数:3 
请高手帮忙改正这个程序,问老师他却叫我问微软,郁闷
请高手帮忙改正这个程序,问老师他却叫我问微软,郁闷,我还不相信这真的是编译器问题

demo2.rar (1.85 MB)
搜索更多相关主题的帖子: 微软 老师 
2008-12-03 10:48
zifeng01
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-12-3
收藏
得分:0 
不知道你有什么问题
2008-12-03 22:05
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
for(int i=0;i<m_startX.GetSize();i++)
    {
        int x1=m_startX.GetAt(i);
        int y1=m_startY.GetAt(i);
        int x2=m_endX.GetAt(i);
        int y2=m_endY.GetAt(i);

        pDC->MoveTo(x1,y1);
        pDC->LineTo(x2,y2);
    }

这里你有没有想过m_startX的size可能会大于m_endX的size,原因是,如果按下后,在松开的那个事件时,鼠标移出了窗口,窗口捕捉不到松开事件,导致m_endX的size和m_startX的size不匹配.
建议用二套点记录方案,一套用于OnMouseMove里,只记录当前活动情况,只有在松开的时候,才将该直线数据记录到另一套正式数据记录中,这个正式的数据只在OnDraw中使用.

以上只是个人想法,不过在观察了微软的画图工具后,发现,即使鼠标离开窗口,它也能画图,因此我认为,它除了使用了上面说的方法,鼠标的捕捉事件是被放到了更深一层的地方,这样不关鼠标在什么地方,事件都被处理,也就不至于起点和终点的size不匹配而造成GetAt的崩溃了.

安全起见,在使用点记录容器前,检查一下它们的匹配性还是有必要的.
2008-12-03 23:03
永恒VC
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-12-3
收藏
得分:0 
回复 第3楼 debroa723 的帖子
很好~真的非常感谢.
2008-12-05 09:44
快速回复:请高手帮忙改正这个程序,问老师他却叫我问微软,郁闷
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017748 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved