2011-01-03 2 views
4

One is supposed to use double buffering when running locally, but to not use double buffering when the window is on a remote session, if one wants to have the best performance of each mode.원격 세션에서 실행 중일 때 LVS_EX_DOUBLEBUFFER가 이중 버퍼가되지 않습니까?

리스트 뷰 컨트롤은 확장 된 스타일, LVS_EX_DOUBLEBUFFER, ListView에 자동적으로 이중 버퍼 내용을 가지고있다.

로컬 세션과 원격 세션 사이의 변경 사항에 대해 알림을 받아 등록하려면이 플래그를 적절히 업데이트해야합니까? 또는 ListView가 자동으로이 작업을 수행합니까?

+1

FWIW, 플래그는 컨트롤이 그려지는 방식을 변경하지 않습니다. 그것은 행동을 바꿀 수 있습니다. 일부 최신 목록보기 모드는 플래그가 없으면 작동하지 않습니다 (마이크로 소프트 만이 자신의 좁은 용도로 작성/테스트하는 것 같은 끔찍한 공통 컨트롤 코드의 버그가 더 많이 있음). 따라서 원격 데스크톱에서 성능 문제가 발생하지 않는다면 다른 상황에서 플래그를 변경하지 않아도 놀라움을 줄 일 수 있습니다. 그래도 내 2 센트! –

+0

@ 한스 패 탄트 (Hans Passant) : 일반 그림에 대해 이야기하는 블로그 게시물이 어떻게 통제 할 수없는 목록보기 컨트롤에 적용되는지 이해하려고합니다. 이유가 무엇인지/어떻게 적용되는지 모르는 경우 나보다 낙담하게 만듭니다. 기록을 위해 당신의 답을 +1했습니다. –

+0

응용 프로그램이 원격 세션에서 실행될 때 LVS_EX_DOUBLEBUFFER 스타일이 ListView에서 제거되는지 묻는 중입니까? 그렇다면, 당신은 이런 종류의 것을 추적 할 수 있어야합니다. –

답변

5

ListView는 사용자가 원격 또는 로컬 중 어느 것을 실행하는지에 따라 자동으로 조정되지 않습니다. 그것은 컨트롤이 생성 될 때 설정 한 확장 스타일 플래그의 값을 존중합니다. LVS_EX_DOUBLEBUFFER을 설정하면 디스플레이가 이중 버퍼링되고 그렇지 않은 경우 디스플레이가 이중 버퍼링됩니다. 레이몬드 첸 (Raymond Chen)은 다른 어떤 행동도 버그가 될 것이라고 동의합니다.

당신은 LVM_SETEXTENDEDLISTVIEWSTYLE로 언제든지 플래그의 상태를 변경할 수 있습니다

SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, isRemote ? 0 : LVS_EX_DOUBLEBUFFER); 

발발했습니다 다음 기사를 연결된 하나를 통지하는 방법을 보여줍니다 후에 때 로컬 및 원격 사이의 표시 변경 : http://blogs.msdn.com/b/oldnewthing/archive/2006/01/04/509194.aspx

관련 문제