Re: resize SDI Application Flickers
In your main frame's PreCreateWindow method, register a class without
CS_HREDRAW or CS_VREDRAW. Use AfxRegisterWndClass to register the
class. By default, MFC registers the class with these bits turned on.
You need to have them off:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.lpszClass = AfxRegisterWndClass(
CS_DBLCLKS, // if you need double-clicks
NULL, // default cursor
NULL,
AfxGetApp()->LoadIcon(IDR_MAINFRAME));
ASSERT(cs.lpszClass);
return CFrameWnd::PreCreateWindow(cs);
}
---
Ajay
Neo wrote:
I made SDI Application in vs2k5. My View class called CproblemView is
inherited from CFormView class. I placed one CListCtrl and one
Multi-line CEdit Control on it for performing resizing on these items.
I wrote the following code in WM_SIZE message. (callCount is
initialized to Zero (0) in constructor).
void CproblemView::OnSize(UINT nType, int cx, int cy)
{
this->SetScrollSizes( MM_TEXT, CSize( cx, cy ) );
CFormView::OnSize(nType, cx, cy);
//IDC_LIST1 is Resource ID of List Control
if( ::IsWindow( this->m_hWnd ) && this->GetDlgItem( IDC_LIST1 ) !=
NULL && callCount == 3 )
{
CRect rectWindow = NULL;
this->GetWindowRect( rectWindow );
CRect rectItem = NULL;
//m_TextControl is Object of CListCtrl
this->m_TextControl.GetWindowRect( rectItem );
LONG t1 = rectWindow.top,
l1 = rectWindow.left,
r1 = rectWindow.right,
b1 = rectWindow.bottom,
t2 = rectItem.top,
l2 = rectItem.left,
r2 = rectItem.right,
b2 = rectItem.bottom;
//m_TextControl is Object of CListCtrl
this->m_TextControl.MoveWindow( 0, 140, r2 - l2, cy - (t2 - t1) );
//m_List is Object of CEdit
this->m_List.MoveWindow( 265, 15, cx - 265, cy - 15 );
}
else
callCount ++;
}
Now when I resize SDI Application Flickers A LOT on Resizing time using
mouse. Does my code has any problem that is causing the flickering?
Regards,
-aims