admin管理员组

文章数量:1536472

2024年6月12日发(作者:)

鼠标滚轮实现单文档视图的放大与缩小

其主要原理是利用SetWindowExt和SetViewportExt函数来动态调节窗口区和视口

区的比例,设窗口区与视口区之间的比例系数为m_delta,鼠标滚轮每滚动一次,在视图

View类的响应函数OnPrepareDC中就改变一次m_delta,然后调用OnPaint函数重新

绘图,这样看起来就实现了视图的放大与缩小。

其主要步骤如下:

1. 建立单文档视图工程,比如;

2. 在CSingleDocView类中添加float型成员变量m_delta,在该类构造函数中初始

化m_delta = 1.0,m_delta即为比例系数,初始化其为1表示窗口与视口大小相同;

3. 向CSingleDocView类中添加消息响应函数OnPrepareDC,向其中添加如下代码:

[cpp] view plaincopy

1. // TODO: 在此添加专用代码和/或调用基类

2. CView::OnPrepareDC(pDC, pInfo);

3. CRect rectClient;

4. GetClientRect(rectClient); // 得到客户区大小

5. pDC->SetMapMode(MM_ANISOTROPIC); // 设置绘图模式

6. pDC->SetWindowExt(*m_delta,*m_delta);

// 设置整个客户区的大小,窗口大小

7. pDC->SetViewportExt(,); // 视口

[cpp] view plaincopy

1.

        pDC->SetViewportOrg(0,0);              

// 设置视口原点

4. OnPaint函数中的代码如下:

[html] view plaincopy

1. CPaintDC dc(this); // device context for p

ainting

2. // TODO: 在此处添加消息处理程序代码

3. // 不为绘图消息调用 CView::OnPaint()

4. OnPrepareDC(&dc);

本文标签: 添加视图文档消息设置