FAQ:WinAPI VCPP:запрет появления полос прокруток на CFormView — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) (Разделение FAQ на статьи.) |
(нет различий)
|
Версия 20:10, 2 ноября 2008
Как запретить появление полос прокруток на форме класса 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); }