2014-10-08 4 views
0

버튼을 클릭하여 항목을 목록 컨트롤에 추가하는 동안 앱이 정지되었습니다. 나는 간단하게하고있다 :목록 컨트롤에 항목을 추가하는 중 UI가 정지 함

for (unsigned i = 1; i < 15000;++i) 
{ 
    listcontrol1.InsertItem(i, L"item list"); 
} 

나는 또한 배경 스레드를 사용했지만 같은 결과를 보였다. 사용자 인터페이스를 차단하지 않고 올바르게 수행하는 방법에 대해 알고 싶습니다.

답변

1

메시지 펌프에 15k 메시지를 보내는 것이 느려질 것입니다.

적절한 캐싱을 사용하여 virtual list control을 더 잘 사용하십시오. 작업 코드에 대해서는 % Windows SDK Dir % \ Samples \ winui \ controls \ common \ vlistvw에서 VListVW Sample을 참조하십시오.

+0

은이 답변이 링크는 답변과 링크가 중지되면 다음 작업 약자로 코드 예제 또는 좀 더 세부 사항을 추가하는 것이 좋을 것이다 미래의 사용자에게 도움이되지 않습니다. –

+0

글쎄, Win32 프로그래밍에서 자주 묻는 질문인데, Asker가 Google 기술을 가지고 있다고 가정해서는 안됩니다 ... 나쁘다. –

1

Sheng Jiang은 가상 목록이 이러한 훌륭한 목록을위한 최상의 솔루션이라고 말하면서. 하지만 당신은 삽입 동안 제어 그림을 피하는 성능을 향상시킬 수 있습니다 :

listcontrol1.SetRedraw(FALSE); 
for (unsigned i = 1; i < 15000; ++i) 
{ 
    listcontrol1.InsertItem(i, L"item list"); 
} 
listcontrol1.SetRedraw(TRUE); 
관련 문제