簡體   English   中英

是否可以/必須在單獨的線程[MFC]中調用OnDraw

[英]Is it possible/necessary to have call to OnDraw in separate thread [MFC]

這是MFC Doc / View應用程序:
是否有可能/必須在單獨的執行線程(即工作線程)中調用OnDraw? 在我們構建的軟件中,Doc / View應用程序中的視圖存在巨大的問題。 也就是說,每次滾動視圖時,處理時間都非常長,以至於應用程序凍結。
需要處理的位圖相當大(平均超過1GB)
謝謝。

如明確要求的那樣,答案是“否”。 必須在主GUI線程的上下文中調用OnDraw。 您可以做的是:

  • 將滾動區域標記為無效(在“ OnScroll”中)
  • 啟動另一個線程以從超大位圖中提取屏幕大小的位圖。
  • OnDraw在無效區域上繪制許多問號。
  • 完成后,后台線程將消息發布到主GUI線程。
  • 消息處理程序將滾動區域標記為現在具有支持位圖(並再次調用“ InvalidateRect”以提示另一個OnDraw)。
  • OnDraw只是將提取的位圖調到適當的位置。

(但是將巨大的位圖分成幾塊是一個更好的主意。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM