2013-10-16 74 views
0

我有一個大量的函數(1500行代碼),我需要調試。我會嘗試並最終將其分解,但可用的工具不能完成任務。在MFC中調試繪圖函數的最簡單方法是什麼?

因此,我需要的是在此期間能夠禁用DC寫入顯示器的緩存以便能夠快速調試。有沒有可以設定的標誌來實現這一點?

+1

作爲性能優化GDI批處理渲染操作。要禁用線程的批處理,您可以調用['GdiSetBatchLimit(1)'](http://msdn.microsoft.com/en-us/library/windows/desktop/dd144846.aspx)。作爲替代方法,您可以通過調用['GdiFlush()'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd144844.aspx)來顯式刷新呈現操作。 – IInspectable

+0

@IInspectable這似乎是正確的答案。發佈它,我會給你信譽。 – Adrian

回答

1

作爲性能優化,GDI執行批處理。當您要求GDI執行操作時,它並不總是立即執行。相反,它將其存儲在一個緩衝區中,一旦該緩衝區滿了,批處理就會被刷新,操作將被髮送到內核模式以供執行。這是GDI默認做的,通常沒有理由改變這種操作模式。

有時您需要控制GDI執行多少批處理或發生刷新時,要麼是因爲要渲染到屏幕外DC並需要從內存中讀取該信息或出於調試目的。

您可以使用2個API調用來控制批處理。要啓動批量操作的刷新,您可以撥打GdiFlush。一旦這個API返回,你保證所有的GDI操作都已經完成。如果您想控制執行批量的數量,您可以使用GdiSetBatchLimit。要完全禁用配料,只需撥打GdiSetBatchLimit(1)即可。

1

我做的方式:

  1. 最簡單的方法是havong兩臺顯示器。
  2. 遠程調試也是完美的,比在同一臺機器上進行調試要好得多。你也可以用虛擬機來做到這一點。

您必須禁用雙緩衝(使用CMemDC)。

相關問題