![](/img/trans.png)
[英]Is CWnd::GetSafeHwnd() and CWnd::m_hWnd ThreadSafe?
[英]Painting CWnd on another CWnd
我有一個CWnd(父級),它擁有一個網格控件,允許在其上繪制一些項目。 問題是我想在上面繪制一些復雜的CWnd,但是網格控件只允許繪制與“ CWnd”無關的“ ItemBase”類派生的項目。
這個ItemBase類允許重寫虛函數void drawItem(CDC *,CRect),該虛函數可以在提供的CDC和剪切的片段CRect上繪制自己的圖形。
我的想法是將復雜的CWnds創建為父窗口的不可見子代,然后在ItemBase的drawItem中在提供的CDC上使用CWnd :: Paint。
所以我要做的是:
在drawItem(CDC * dc,CRect區域)中,我調用:
m_sophisticatedWindow-> MoveWindow(area); //將窗口移到正確的位置m_sophisticatedWindow-> Print(dc,PRF_CLIENT); //渲染它
因此,我期望在適當的研磨控制位置可以繪制適當的精密窗戶,但是什么也不會發生。 我嘗試使用PrintClient / PrintWindow而不是Print。 我也在用MoveWindow做實驗-像將位置更改為一些固定位置,但這無濟於事。
如果我直接在drawItem上的CDC上繪制任何內容(如線條,點等)-一切都很好,只是Print函數似乎並沒有達到我的預期。
有什么線索嗎?
我的問題是我將CDC的剪切區域設置了。 因此,只要我在“錯誤的”位置繪畫,什么都不會出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.