0

我正在尝试为我的应用程序实现放大功能。这个想法是当我选择放大时,图形应该水平扩展 2 倍大,这样只有一半的图形会显示在窗口中,而不管窗口大小,都需要滚动才能看到另一半。

我有一个缩放因子的缩放变量。然后在 onDraw(CDC &pDC) 中:

//...set pen and others...
CRect rect;
GetClientRect(rect);
for (int x=0; x < zoomFactor*rect.Width(); x++)
    //....draw the graph

然后在 onToolsZoomin() 中:

void CMyGraphView::OnToolsZoomin()
{
    zoom *= 2;
    CRect rect;
    GetClientRect(rect);
    CSize sizeTotal;
    sizeTotal.cx = zoom*rect.Width();
    sizeTotal.cy = 0;
    SetScrollSizes(MM_TEXT, sizeTotal);
    this->RedrawWindow();
}

当我运行它时,我可以让窗口正确绘制图形的一半,并显示一个滚动条,指示仅显示图形的一半。但是当我尝试滚动它时,它会回到原始位置(左下角),并且图表的另一半不会出现。

4

1 回答 1

0

两个函数中的参数不相同。这可能是问题的第一个原因。你能把假设调用 OnToolsZoomin 的代码放进去吗?它是通过 WM_VSCROLL 还是 WM_HSCROLL 消息处理的?您的函数 OnToolsZoomin 是否被调用?你的滚动条是否正确初始化(滚动范围)?

于 2013-02-20T13:27:20.187 回答