FAQ:WinAPI VCPP:запрет появления полос прокруток на CFormView

Материал из Весельчак У

Перейти к: навигация, поиск

Как запретить появление полос прокруток на форме класса CFormView, когда пользователь делает размер главного окна меньше размера формы?

Это можно сделать методом SetScaleToFitSize():

void CMyView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
 
// скрываем полосы прокрутки
GetParentFrame()->RecalcLayout();
 
// это уберёт полосы прокрутки со вьюхи
ResizeParentToFit();
 
SIZE s={0, 0};
SetScaleToFitSize(s);
// далее вызовется обработчик OnPaint(), о котором ниже
 
//...
}

Также обратите внимание на одну особенность: в отладочной версии программы вызов OnPaint после выполнения SetScaleToFitSize() с параметром s={0, 0} происходит с ошибкой (программа при этом завершается). Обходится это так:

void CMyView::OnPaint()
{
#ifdef _DEBUG
CPaintDC dc(this);
#else
CFormView::OnPaint();
#endif
}

Или так:

void CMyView::OnPaint()
{
CPaintDC dc(this);
}