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

Материал из Весельчак У
Перейти к: навигация, поиск
(Разделение FAQ на статьи.)
 
 
Строка 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);
}