Я пытаюсь реализовать функцию масштабирования для своего приложения. Идея заключается в том, что я решил увеличить масштаб, график должен расширяться горизонтально в 2 раза больше, так что в окне будет отображаться только половина графика, и нужно будет прокрутить, чтобы увидеть другую половину, несмотря на размер окна ,C++ MFC scrollbar не может прокручивать
У меня есть переменная масштабирования для коэффициента масштабирования. Тогда в 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. В последнем случае все, что вам нужно сделать, - это увеличить размер View, который вы используете, чтобы нарисовать график (используя MoveWindow()). Полосы прокрутки автоматически появятся на мэйнфрейме. – cha
Я делаю MDI. Я попытался добавить MoveWindow (rect.left, rect.top, rect.Width(), rect.Height(), true); toToolsZoomin, но все еще не работает. (я также попытался передать 2 * rect.width() и rect.width()/2). Похоже, что исходный граф будет разделен на два, но оба они все еще видны в том же окне, если я вызываю его с помощью rect.width()/2. – LoveProgramming