CListCtrl 데이터 변경 및 데이터 삽입 반 짝 임 방지 방법
법 1:LVS 직접 설정EX_DOUBLEBUFFER 확장 속성 입 니 다.
법 2:더 블 버퍼 를 사용 합 니 다.
클래스 CMyListCtrl 을 사용자 정의 하여 CListCtrl 을 계승 하고 OnPaint 와 OnEraseBkgd 를 다시 쓰 는 방법
void CMyListCtrl::OnPaint()
{
//
CPaintDC dc(this); // device context for painting
CRect rect;
CRect headerRect;
CDC MenDC; // DC
CBitmap MemMap;
GetClientRect(&rect);
//GetDlgItem(0)->GetWindowRect(&headerRect);
this->GetHeaderCtrl()->GetWindowRect(&headerRect);
MenDC.CreateCompatibleDC(&dc);
MemMap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
MenDC.SelectObject(&MemMap);
MenDC.FillSolidRect(&rect, RGB(255, 255, 255));
// OnPaint(), DC
DefWindowProc(WM_PAINT, (WPARAM)MenDC.m_hDC, (LPARAM)0);
//
dc.BitBlt(0,
headerRect.Height(),
rect.Width(),
rect.Height(),
&MenDC,
0,
headerRect.Height(),
SRCCOPY);
MenDC.DeleteDC();
MemMap.DeleteObject();
}
BOOL CMyListCtrl::OnEraseBkgnd(CDC* pDC)
{
// TODO: /
return FALSE;
}
(2)CListCtrl 데이터 삽입 으로 깜빡 임 방지:
(1)의 기초 위 에 아래 코드 를 덧붙이다
CString str;
str.Format(L"%d", nItem);
// plist->LockWindowUpdate();
// plist->SetRedraw(FALSE);
plist->InsertItem(nItem, str);
plist->SetItemText(nItem, 0, str);
plist->SetItemText(nItem, 1, L" ");
// plist->UnlockWindowUpdate();
// plist->SetRedraw(TRUE);
plist->Invalidate(); // , ,
plist->SetScrollPos(SB_VERT, nItem, TRUE); // ,
plist->EnsureVisible(nItem, FALSE);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MYSQL 대량 삽입 데이터 구현 코드 1/3페이지@echo off cls set CLASSPATH=..\api\jogre.jar set CLASSPATH=%CLASSPATH%;. set CLASSPATH=%CLASSPATH%;classes set CLASSPATH...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.