2015-06-29 22 views
3

我使用普通的C,這裏是代碼:使用DWM後,按鈕上的文字變成透明

創建按鈕:

HWND hBTN = CreateWindow(_T("button"), _T("AAasfasdfdsa"), WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 10, 10, 100, 100, hWnd, NULL, hInst, NULL); 

呼叫DWM功能:

DWM_BLURBEHIND bb = { 0 }; 
bb.dwFlags = DWM_BB_ENABLE; 
bb.fEnable = true; 
bb.hRgnBlur = NULL; 
MARGINS margins = { -1, -1, -1, -1 }; 
DwmExtendFrameIntoClientArea(hWnd, &margins); 

圖片演示:

enter image description here

+0

而且你能指望它做什麼? –

+0

[DwmExtendFrameIntoClientArea](https://msdn.microsoft.com/en-us/library/windows/desktop/aa969512.aspx):*「使用負邊距值創建」玻璃板「效果[...] 「*。效果看起來應該是這樣。你希望取而代之的是什麼? – IInspectable

+0

如何讓文字變黑? – markable

回答

0

文本變得透明,因爲黑色被視爲透明度鍵。

因此,你只需要設置窗口中的其他關鍵透明度:

SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_LAYERED); 
SetLayeredWindowAttributes(hWnd,RGB(200,201,202),0,LWA_COLORKEY); 
+0

它只適用於一些顏色,例如,如果我使用'RGB(0,255,0)',當我單擊窗口時,窗口會自動隱藏,因爲Windows將窗口視爲「透明」(我猜) – CodigosTutoriales