我想实现一个放大功能,我的应用程序。 这个想法是当我选择放大时,图形应该水平放大2倍,以便只有一半的图形将显示在窗口中,并且需要滚动以查看另一半,尽管窗口的大小。C++ MFC滚动条不能滚动
我有一个变焦因子缩放变量。然后在的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();
}
当我运行这一点,我可以有窗口中正确绘制图形和显示一个滚动条的一半只显示了一半的图表。但是,当我尝试滚动它时,它会回到原始位置(左下角),另一半图不会显示出来。
这是什么样的应用?它是基于对话的,还是SDI/MDI。在后一种情况下,您需要做的只是扩大您用于绘制图形的视图的大小(使用MoveWindow())。滚动条将自动出现在大型机上。 – cha 2013-02-20 06:14:24
我正在做MDI。我试图添加MoveWindow(rect.left,rect.top,rect.Width(),rect.Height(),true);到onToolsZoomin,但仍然无法正常工作。 (我也试过传递2 * rect.width()和rect.width()/ 2)。它看起来像原始图将被拆分为两个,但如果我用rect.width()/ 2调用它,它们在同一个窗口中仍然可见。 – LoveProgramming 2013-02-20 15:24:56