开发环境:VC6, a dialog based MFC application.
主界面:
为对话框添加WM_CTLCOLOR消息响应函数:
HBRUSH CDDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_EDIT1) // 获取子窗口控件ID
{
//pDC->SetTextColor(RGB(255, 0, 0)); // 设置文字颜色
::SendMessage(GetDlgItem(IDC_EDIT1)->GetSafeHwnd(), WM_KILLFOCUS, 0, 0); // 让其失去焦点,防止文字被选中
//((CEdit*)pWnd)->SetSel(-1, 0); // 不选中任何内容,与上句效果相同
pDC->SetBkMode(TRANSPARENT); // 设置背景透明
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
return hbr;
}
运行效果:
看到了吧,打红圈的地方背景和文字颜色都透明了。
对话框加载背景图片的代码如下(为对话框添加WM_PAINT消息响应函数):