2013-07-27 34 views
1

我想實現在MFC中是這樣的:重繪父窗口的子窗口的OnPaint中在MFC

包含幾個子窗口父窗口。當窗口拖到父級內的任何位置時,我想要一些水平和垂直網格線出現在子窗口周圍。爲此,我正在跟蹤我的OnPaint()處理程序中的移動,並且訪問父項並在子項周圍繪製這些網格線。但它的表現並不像我想要的那樣。

我的猜測是,孩子的OnPaint()只會更新孩子的繪圖區域,所以即使我訪問父母的DC,我也不能在它上面繪製任何東西,除非它正在重繪?

任何人都可以提出一個更好的方法來實現上述功能?我究竟做錯了什麼?我需要一切發生在孩子的OnPaint()

回答

0

一種方法是將數據傳遞給父窗口並調用它的Invalidate函數。然後它會在自己的OnPaint中繪製網格線。

或者您可以直接在子窗口的父窗口上繪製,但使用父級的GetDC函數而不是使用子級的DC。

+0

如果我打電話給家長的無效功能,它是否會繪製所有的子窗口和其他內容?當孩子在屏幕上拖動時,我只需要圍繞孩子的網格線。 那就是我最初嘗試的方式,在孩子的OnPaint中獲得父母的DC並繪製這些網格線。這在技術上應該是正確的?但在我的情況下沒有任何東西。如果我在屏幕上隨機拖動導致OnPaint呼叫的分配,然後我看到一些重疊線。 –

0

解決此問題的一種方法是在父級客戶區頂部使用UpdateLayeredWindow繪製半透明網格窗口,同時將子窗口排列在頂層。在安排完成後,網格窗口可以被銷燬。通過這種方式,現有的顯示代碼將需要最小的更改。