2008-11-10 4 views
3

여러 개의 커다란 콤보 상자가있는 대화 상자가 있습니다. 건설 중 눈에 띄는 지연이 있습니다 (프로파일 링으로 확인 됨).MFC에서 AddString의 성능이 느리다

필자의 초기 생각은 그 정렬이 성능을 떨어 뜨리는 것이지만, 정렬을 비활성화하고 대신 InsertString을 사용하면 훨씬 더 나은 것으로 보이지 않습니다. 내가 그것이 지나치게 많은 수의 아이템처럼 보일 것이라고 생각하지 못했습니다. 제가해야 할 또 다른 것들이 있습니까?

MFC 호출은 Win32 메시지 호출에 대한 간단한 래퍼이므로 중요한 오버 헤드가 없다고 생각합니다. 당신이 추가 주위에 당신하여 CWnd :: SetRedraw를 사용한다

중복 How to load a large array of strings in to an MFC combobox control fast as possible?

+0

0120-13-0754 같은 질문에 plz 닫기 – yesraaj

답변

10

각각 추가 한 후 모든 내부 상태를 업데이트 컨트롤을 방지합니다.

이미 그 일을하지 않는 경우, 다음을 수행하십시오

combo.SetRedraw(FALSE); 

... All the adds 

combo.SetRedraw(TRUE); 
combo.Invalidate(); 

또한 콤보 박스의 메모리를 미리 할당 CComboBox::InitStorage 기능을 사용하는 것이 좋습니다.