在远程会话上运行时,LVS_EX_DOUBLEBUFFER是否正确不是双缓冲区?

Bil*_*eal 4 c++ windows listview doublebuffered common-controls

一个应该在本地运行时使用双缓冲,但是当窗口在远程会话时不使用双缓冲,如果想要获得每个模式的最佳性能.

ListView控件具有扩展样式,LVS_EX_DOUBLEBUFFER它自动双重缓冲ListView的内容.

是否需要注册以通知本地和远程会话之间的更改,并相应地更新此标志?或者ListView会自动执行此操作吗?

Mar*_*som 5

ListView不会自动调整自己是运行远程还是本地.它尊重您在创建控件时设置的扩展样式标志的值; 如果你设置LVS_EX_DOUBLEBUFFER然后显示将是双缓冲,如果你没有,它不会.我相信Raymond Chen会同意任何其他行为都是一个错误.

您可以随时使用以下命令更改标志的状态LVM_SETEXTENDEDLISTVIEWSTYLE:

SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, isRemote ? 0 : LVS_EX_DOUBLEBUFFER);
Run Code Online (Sandbox Code Playgroud)

在链接后的文章显示如何在本地和远程之间显示更改时获得通知:http://blogs.msdn.com/b/oldnewthing/archive/2006/01/04/509194.aspx