2009-07-30 57 views
0

我試圖在vc++中創建一個自定義CStatic控件,並且有一些問題。CStatic自定義控件

我原本只是用CStatic控制SS_BLACKRECT風格。這對於這種情況非常有利,直到我需要在需求控制下顯示圖像。

我想出了實際將圖像繪製到控件上的所有物流,但我似乎無法弄清楚如何在不干擾其他事情的情況下如何操作。

基本上我想用SS_BLACKRECT風格大部分時間的控制功能正常CStatic

然後,我需要能夠調用一個方法,它會導致它在控件上繪製圖像。我正在使用GDI進行繪圖,並且在OnPaint()方法和DrawItem()方法中均嘗試過,結果沒有成功。我可以把它畫在OnPaint()中,但是當我打電話給基地CStatic::OnPaint()它畫出了我的形象。

我需要能夠讓它像正常一樣繪製,然後只是將圖像放在最上面。當我試圖在DrawItem()方法中使用它時,我遇到了一個問題,因爲它顯然不是使用SS_BLACKRECT樣式進行繪製,而是等待我按照它的設想繪製控件。

我想我想要的是三件事之一。在基礎OnPaint()方法結束後使用GDI進行繪製的一種方法。一種方法是讓控件繪製默認樣式,然後再繪製OWNERDRAW圖像。或者模擬SS_BLACKRECT圖紙的代碼。

最後一個可能是最簡單的,但我不知道我需要設置的所有東西來繪製CStatic控件,如默認的DrawItem。

+0

您是否找到了此解決方案? – Alan 2009-08-03 20:51:00

回答

1

嘗試調用返回的顏色Default()在您的OnPaint()處理程序中。

然後,根據您是否繪製圖像,然後可以繪製標準CStatic控件的頂部。

0

這裏有一對夫婦的想法:

如果CStatic::OnPaint()吸引了你的形象,然後嘗試先調用它事後繪製圖像。

否則,什麼小我見過SS_BLACKRECT的,你應該能夠複製它的圖紙簡單地調用CDC::FillSolidRect()通過你的控制,通過​​獲得的矩形,並使用GetSysColor(COLOR_WINDOWFRAME)