用鼠标滚轮控制图片缩小倍数,当向下滚动(缩小)时,如果过快,图片反而放大很多倍。如果滚动比较慢一些,正常。这是为什么?请大家不吝赐教。
代码如下:BOOL CrzexplorerView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
CMainFrame *pMainfrm=(CMainFrame *)AfxGetMainWnd();
if(g_bZoom==TRUE && m_bZoom)
{
if (zDelta>0) {
pMainfrm->IsZoom*=zDelta/120*1.01; //每次放大1.01倍
Invalidate(TRUE);
}
if (zDelta<0)
{
pMainfrm->IsZoom*=(-zDelta)/120*0.99; //每次缩小0.99倍
Invalidate(TRUE);
}
}
if (g_bZoom==TRUE && m_bZoom)
return TRUE;
else
return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}
代码如下:BOOL CrzexplorerView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
CMainFrame *pMainfrm=(CMainFrame *)AfxGetMainWnd();
if(g_bZoom==TRUE && m_bZoom)
{
if (zDelta>0) {
pMainfrm->IsZoom*=zDelta/120*1.01; //每次放大1.01倍
Invalidate(TRUE);
}
if (zDelta<0)
{
pMainfrm->IsZoom*=(-zDelta)/120*0.99; //每次缩小0.99倍
Invalidate(TRUE);
}
}
if (g_bZoom==TRUE && m_bZoom)
return TRUE;
else
return CScrollView::OnMouseWheel(nFlags, zDelta, pt);
}
解决方案 »
- 怎样在ATL中实现对象类型的属性,表现在C#中就是object,可以存取对象。
- 急,在线等待.关于BitBlt以及TransparentBlt的问题,只有50分了,会陆续加的,谢谢~
- 最最简单问题我都得麻烦各位了
- 200分 谁能告诉我我错哪了?!
- 高手救命啊!帮我看看程序错在何处!快崩溃了,3Q!
- 各位大哥帮个忙,我已经有一个EXCEL的文件了,怎样用VC把数据生成到EXCEL表中(固定格式)
- 请问怎样给IMD程序加一个界面呢?
- 请问如何制作标尺栏?
- 求源代码200分一个
- 我的Direct3D9.0坏了,我重装了8.0,一诊断DDraw,D3D,DSound...全不能用了,我该怎么办?
- 如何检测某串口设备
- 多文档菜单命令消息是在哪个类里处理啊 ????!!!
我做了如下修改,OK! if (zDelta==120) {
pMainfrm->IsZoom*=1.01; //每次放大1.01倍
Invalidate(TRUE);
}
if (zDelta==-120)
{
pMainfrm->IsZoom*=0.99; //每次缩小0.99倍
Invalidate(TRUE);