C ++ MFC滚动条无法滚动

时间:2013-02-20 04:57:19

标签: visual-c++ mfc

我正在尝试为我的应用实现放大功能。 我的想法是当我选择放大时,图形应该水平扩展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();
}

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

1 个答案:

答案 0 :(得分:0)

两个功能中的参数不同。这可能是问题的第一个原因。 你可以把想要的代码叫做OnToolsZoomin吗?它是通过WM_VSCROLL还是WM_HSCROLL消息处理的? 你的函数是OnToolsZoomin吗? 滚动条是否已正确初始化(滚动范围)?