FAQ:WinAPI VCPP:запрет появления полос прокруток на CFormView — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (Разделение FAQ на статьи.) |
RXL (обсуждение | вклад) |
||
Строка 45: | Строка 45: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | [[Category:FAQ:WinAPI VCPP]] | + | [[Category:FAQ:WinAPI VCPP]] [[Category:FAQ:MFC]] |
Текущая версия на 22:11, 3 октября 2009
Как запретить появление полос прокруток на форме класса 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); }