在MFC中调试绘图函数的最简单方法是什么?

时间:2013-10-16 19:18:52

标签: winapi mfc win32gui

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

因此,在此期间我需要的是能够禁用DC写入显示器的缓存,以便能够快速调试。我可以设置一些标志来实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

我的方式:

  1. 最简单的方法是有两个监视器。
  2. 远程调试也是完美的,比在同一台机器上调试要好得多。您也可以使用虚拟机执行此操作。
  3. 您必须禁用双缓冲(使用CMemDC)。

答案 1 :(得分:1)

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

有时您需要控制批处理GDI执行的次数或刷新时间,因为您要渲染到屏幕外DC并需要从内存中读取该信息,或者出于调试目的。

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