0

我有一个需要调试的大量函数(1500 行代码)。我会尝试并最终将其分解,但可用的工具无法完成任务。

所以,与此同时,我需要的是能够禁用 DC 写入显示器的缓存,以便能够快速调试。我可以设置一些标志来完成此操作吗?

4

2 回答 2

1

我这样做的方式:

  1. 最简单的方法是拥有两个显示器。
  2. 远程调试也很完美,比同机调试好很多。您也可以使用虚拟机执行此操作。

您必须禁用双缓冲(使用 CMemDC)。

于 2013-10-17T05:59:59.763 回答
1

作为性能优化,GDI 执行批处理。当您要求 GDI 执行一个操作时,它并不总是立即执行它。相反,它将它存储在缓冲区中,一旦该缓冲区已满,批处理就会被刷新,并且操作会被发送到内核模式以执行。这是 GDI 默认所做的,通常没有理由更改这种操作模式。

有时,您需要控制 GDI 执行多少批处理或何时进行刷新,因为您正在渲染到屏幕外 DC 并且需要从内存中读回该信息,或者出于调试目的。

您可以使用 2 个 API 调用来控制批处理。要启动批量操作的刷新,您可以调用GdiFlush. 一旦此 API 返回,您就可以保证所有 GDI 操作都已运行完成。如果要控制执行的批处理量,可以使用GdiSetBatchLimit. 要完全禁用批处理,只需调用GdiSetBatchLimit(1).

于 2013-10-17T17:03:26.183 回答