描述:
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;
}