夥計們,有人能給我一個短暫的運行如何改變在運行時的CEdit控件的背景顏色?如果字段長度爲零,我希望能夠將背景更改爲紅色,否則將正常白色更改爲紅色。MFC:改變CEdit的顏色
4
A
回答
6
你不能用普通的CEdit來做,你需要重寫一些比特。
實現自己ON_WM_CTLCOLOR_REFLECT處理程序,然後在處理程序返回的彩色CBrush:
(大概,你需要把通常的資源管理在那裏,rememebr刪除你的畫筆在析構函數)
class CColorEdit : public CEdit
{
....
CBrush m_brBkgnd;
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
{
m_brBkgnd.DeleteObject();
m_brBkgnd.CreateSolidBrush(nCtlColor);
}
}
3
這也可以從沒有獲得的CEdit做:
- 添加
ON_WM_CTLCOLOR()
到你的對話框的BEGIN_MESSAGE_MAP()
代碼塊。 添加
OnCltColor()
到對話框類:afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
像這樣實現
OnCtlColor()
:HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { if ((CTLCOLOR_EDIT == nCtlColor) && (IDC_MY_EDIT == pWnd->GetDlgCtrlID())) { return m_brMyEditBk; //Create this brush in OnInitDialog() and destroy in destructor } return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); }
相關問題
- 1. 在MFC/Win32中使用什麼顏色的只讀CEdit?
- 2. 改變顏色的顏色
- 3. 改變顏色的顏色改變所有圓形顏色
- 4. MFC中的CEdit和GetwindowText
- 5. 更改MFC C++中的文本顏色?
- 6. CEdit CPropertyPage中的只讀背景顏色
- 7. 改變顏色
- 8. 改變顏色
- 9. 改變顏色
- 10. 改變顏色
- 11. 改變顏色
- 12. 改變顏色
- 13. 改變顏色
- 14. 改變顏色
- 15. 改變顏色
- 16. 改變顏色
- 17. 改變顏色
- 18. 改變顏色
- 19. 改變顏色
- 20. 改變顏色
- 21. 改變顏色
- 22. MFC CEdit佔位符文本
- 23. 改變原子的顏色的顏色
- 24. 如何改變進度條的顏色在MFC
- 25. 無法更改mfc進度欄顏色
- 26. MFC:環 - 沒有顏色變化
- 27. Eclipse改變顏色主題的顏色?
- 28. OpenGL 1.1改變顏色改變以前的顏色?
- 29. 防止改變顏色的單元格再次改變顏色
- 30. 當我改變它的顏色時,JButton不會改變顏色