15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


CFormView - (Elastic) Annoying Flashes

Manish J. Dalal -- mjdalal@bectel.com
Friday, April 12, 1996

VC++ 4.0, Win NT 3.51

I am trying to implement an Elastic View based on CFormView. In order to resize 
controls, I am overriding OnSize >>

void CElasticView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	// my code
	if (m_ok == 1) {
		CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREEVIEW1);
		CRect rect;
		rect.left = cx/500;
		rect.top = cy/500;
		rect.right = cx/3;
		rect.bottom = cy - cy/500;
		pTree->MoveWindow(&rect,FALSE);
		//similar for other controls
	}
}

Although this works, when user resizes, it leads to annoying flashes,
because of window erasing background. From Mike B's Book(Rev Win32), I
know (well I may be completely off the trak!) that I have to play
around with OnEraseBackground(?), but I am completely lost. Any help
will be appreciated.

Thanks,
Manish Dalal
mjdalal@bechtel.com



Mike Blaszczak -- mikeblas@msn.com
Wednesday, April 17, 1996

From: 	owner-mfc-l@netcom.com on behalf of Manish J. Dalal
Sent: 	Friday, April 12, 1996 08:07

> VC++ 4.0, Win NT 3.51

Thanks.

> I am trying to implement an Elastic View based on CFormView. In order to 
resize 
> controls, I am overriding OnSize >>

What is an "elastic view"?

>		pTree->MoveWindow(&rect,FALSE);
>		// similar

If you mean that you're caling MoveWindow() many times, this might be the root 
of your problem.  Maybe you should read up on BeginDeferWindowPos(), 
DeferWindowPos(), and EndDeferWindowPos().

.B ekiM
TCHAR sz[] = _T("Computers are for sissies.");




| Вернуться в корень Архива |