描述:
MFC。我寫了個設置對話框背景顏色的一段代碼,運行後,在拖動對話框的過程中,改變顏色的這段代碼出現了報錯(HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);)。一直沒找到問題的原因,請教下網上的大神。下面附上代碼和截圖;
//背景顏色
HBRUSH CisionDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
m_Brush.Back.CreateSolidBrush(RGB(203, 228, 253)); // 創建一把背景刷子
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
//if (pWnd->GetDlgCtrlID() == IDD_JUPITERVISION_DIALOG)
if (nCtlColor == CTLCOLOR_DLG)
{
return m_Brush.Back;
//pDC->SetBkColor(RGB(255,0,0));
//pDC->SetBkMode(TRANSPARENT);
}
////設置透明色
//::SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
//::SetLayeredWindowAttributes(m_hWnd, 0, 120, LWA_ALPHA); // 120是透明度,範圍是0~255
// TODO: 如果默認的不是所需畫筆,則返回另一個畫筆
return hbr;
}