在OnPaint()中加載圖片作為對話框的背景,發現slider control的背景變黑(如圖1),且滑動后變為圖2的樣子。
控制元件 slider control 的背景模式調為Transparent 和 非Transparent,都沒有解決。
求大神幫忙,非常感謝!

(圖1)

(圖2)
uj5u.com熱心網友回復:
控制元件透明化。。。uj5u.com熱心網友回復:
謝謝,只是已經對控制元件改過Transparent了,始終沒有效果
uj5u.com熱心網友回復:
所有控制元件都這樣么?還是只有slider?uj5u.com熱心網友回復:
把代碼貼出來吧,有時間大家幫你看看uj5u.com熱心網友回復:
其他控制元件都沒有問題,只有slider出先了上述問題。
我在OnPaint里寫了加載背景影像:
CPaintDC dc(this);
CRect rc;
GetClientRect(&rc);
dc.SetStretchBltMode(COLORONCOLOR);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBG;
bmpBG.LoadBitmap(IDB_BG1); //IDB_BG1 是背景的ID
BITMAP bitmap1;
bmpBG.GetBitmap(&bitmap1);
CBitmap* pbmpPri = dcMem.SelectObject(&bmpBG);
dc.StretchBlt(0,0,rc.Width(), rc.Height(), &dcMem,0,0,bitmap1.bmWidth, bitmap1.bmHeight, SRCCOPY);
在OnCtlColor()中通過如下代碼實作了靜態、編輯等等控制元件的背景透明化:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor==CTLCOLOR_STATIC || nCtlColor==CTLCOLOR_SCROLLBAR)
{
pDC->SetBkMode(TRANSPARENT);//透明
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
其實對slider背景不透明也可以,但它現在出現了黑色背景,且左右滑動滑塊后,會出現如問題的圖2所示情況,我對改控制元件的屬性也進行了很多False 和True的很多改變,也不好使,下圖是slider現在的屬性截圖

謝謝你們!
uj5u.com熱心網友回復:
你好 你的問題解決了嗎?我現在也遇到同樣的問題uj5u.com熱心網友回復:
我也是這樣的問題,只不過我的是整個Static text都是背景黑色的,有哪位大神可以告訴我是怎么回事嗎?uj5u.com熱心網友回復:
這就是為什么DUI存在的原因轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/98308.html
標籤:非技術類
下一篇:關于CMarkup的問題
