我需要调试一个庞大的函数(1500行代码)。我会尝试并最终将其分解,但可用的工具无法完成任务。
因此,在此期间我需要的是能够禁用DC写入显示器的缓存,以便能够快速调试。我可以设置一些标志来实现这个目标吗?
答案 0 :(得分:1)
我的方式:
您必须禁用双缓冲(使用CMemDC)。
答案 1 :(得分:1)
作为性能优化,GDI执行批处理。当您要求GDI执行操作时,它并不总是立即执行。相反,它将它存储在缓冲区中,一旦该缓冲区变满,批处理就会被刷新,并且操作将被发送到内核模式以供执行。这是GDI默认执行的操作,通常没有理由改变此操作模式。
有时您需要控制批处理GDI执行的次数或刷新时间,因为您要渲染到屏幕外DC并需要从内存中读取该信息,或者出于调试目的。
您可以使用2个API调用来控制批处理。要启动批量操作的刷新,您可以调用GdiFlush
。一旦此API返回,您就可以保证所有GDI操作都已完成。如果要控制批量执行,可以使用GdiSetBatchLimit
。要完全禁用批处理,只需拨打GdiSetBatchLimit(1)
。