
剛將原來的工程改成由原來的多位元組改成Unicode的方式,發現如上圖的控制元件,是VS2010的Combo-box控制元件,比如我想要將該控制元件改成綠色,以前我在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)函式里面,
pDC->SetBkColor(bkColor);
pDC->SetTextColor(textColor);
這樣子應該是可以實作的,但是改成Unicode之后,嘗試了很多方式都沒成功,改變的只有選擇下拉時候部分的顏色,選中之后顯示框的顏色并沒有改變。請問有人遇到過相似的問題嗎,我該怎么操作才可以改變顏色呢。
uj5u.com熱心網友回復:
這OnPaint里面創建個畫筆HPEN hPen,hOldPen; //畫筆
hPen = CreatePen(PS_SOLID, 2, RGB(255,0,0));//生成紅色色畫筆 畫筆寬度5個像素
hOldPen = (HPEN)SelectObject(hdc, hPen);//把畫筆引入設備場境
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
if(pWnd->GetDlgCtrlID() == IDC_控制元件) //更改按鈕顏色
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(0, 0, 0));
pDC->SetTextColor(RGB(255, 255, 255));
return m_brush; //自己創建的畫刷
}
uj5u.com熱心網友回復:
“OnPaint里面創建個畫筆”是指重繪一個子的combobox控制元件,然后再該控制元件下面添加OnPaint函式添加你的代碼嗎?
uj5u.com熱心網友回復:
沒有成功呢uj5u.com熱心網友回復:
估計是啟用了MANIFEST 所以導致系統風格的資源接管了標準的控制元件風格, 自繪吧uj5u.com熱心網友回復:
子類化,然后自己再重繪HBRUSH CMyComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_LISTBOX)
pDC->SetBkColor(RGB(255, 0, 0));
return CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
}
uj5u.com熱心網友回復:
創建畫筆這種占資源的東西,不要在onpaint里反復創建和釋放,應該放在Oncreate函式里創建。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126391.html
標籤:界面
上一篇:關于CMFCPropertyGridProperty中ComboBox下拉框問題
下一篇:mfc發送txt檔案資料求助
