簡體   English   中英

在另一個CWnd上繪制CWnd

[英]Painting CWnd on another CWnd

我有一個CWnd(父級),它擁有一個網格控件,允許在其上繪制一些項目。 問題是我想在上面繪制一些復雜的CWnd,但是網格控件只允許繪制與“ CWnd”無關的“ ItemBase”類派生的項目。

這個ItemBase類允許重寫虛函數void drawItem(CDC *,CRect),該虛函數可以在提供的CDC和剪切的片段CRect上繪制自己的圖形。

我的想法是將復雜的CWnds創建為父窗口的不可見子代,然后在ItemBase的drawItem中在提供的CDC上使用CWnd :: Paint。

所以我要做的是:

  1. 我有一個網格控件。
  2. 我創建一組復雜的窗口
  3. 我為每個復雜的窗口創建一個從ItemBase派生的類的對象
  4. 我將基本類型為ItemBase的對象集添加到網格控件
  5. 在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.

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