2009-01-15 38 views
3

我正在使用Visual Studio 2005中的對話框編輯器創建一個帶有靜態文本控件的對話框。我希望靜態文本控件的背景透明,因爲我在其下使用靜態圖像控件,而灰色文本背景看起來很可怕。在編輯器中,我將「透明」屬性設置爲「真」,並使背景變得透明,就像我希望的那樣。但是,只要我運行我的應用程序並使用SendMessage(hText,WM_SETTEXT,0L,「newtext」)更改文本,背景將失去透明度並再次變爲灰色。有任何想法嗎?順便說一句,我用C++來做這件事。Visual Studio 2005:靜態文本控件不會顯示透明背景

在此先感謝您的幫助!

回答

1

嘗試隱藏控件,然後設置文本,然後顯示它。

0

我不知道如何在對話框編輯器中做到這一點,但是如果您在靜態父窗口中處理WM_NOTIFY消息,靜態會在繪製靜態圖之前發送WM_CTLCOLORSTATIC消息。在那裏,如果您調用SetBkMode((HDC)wParam,TRANSPARENT),那應該使靜態具有透明背景。

2

正如Anthony Johnson所說,在對話框中處理WM_CTLCOLORSTATIC消息(您不必處理WM_NOTIFY - 我不認爲靜態控件使用該消息)。但它似乎不足以將背景模式設置爲透明。您還必須將背景畫筆設置爲空畫筆。像這樣的東西應該工作(在你的DialogProc):

case WM_CTLCOLORSTATIC: 
    SetBkMode((HDC)wParam, TRANSPARENT); 
    return (INT_PTR)(HBRUSH)GetStockObject(NULL_BRUSH); 

如果更改靜態控件的文本,你可能要作廢什麼是它下面爲它,當你這樣做正確繪製。