没错啊,这个OnEraseBkgnd函数里面只有一句return TRUE,你看看我的
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
void CDDemoDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
CDC *pDC = GetDC();
CRect rect;
GetClientRect (&rect);
//创建一个内存中的显示设备
CDC nDC;
nDC.CreateCompatibleDC(NULL);
//创建一个内存中的图像
CBitmap nBitmap,*OldBitMap;
nBitmap.CreateCompatibleBitmap(pDC, rect.Width(),rect.Height());
//指定内存显示设备在内存中的图像上画图
OldBitMap=nDC.SelectObject(&nBitmap);
nDC.FillSolidRect(rect,RGB(255,255,255));
CString cstrText;
SYSTEMTIME
st;
::GetLocalTime(&st);
if(st.wHour<10)
{
cstrText=_T("0");
cstrText.Format(cstrText+_T("%d:"),st.wHour);
}
else
cstrText.Format(_T("%d:"),st.wHour);
if(st.wMinute<10)
cstrText.Format(cstrText+_T("0")+_T("%d:"),st.wMinute);
else
cstrText.Format(cstrText+_T("%d:"),st.wMinute);
if(st.wSecond<10)
cstrText.Format(cstrText+_T("0")+_T("%d"),st.wSecond);
else
cstrText.Format(cstrText+_T("%d"),st.wSecond);
nDC.TextOut(50,50,cstrText);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&nDC, 0, 0, SRCCOPY);
//释放相关资源
nDC.SelectObject(OldBitMap);
nBitmap.DeleteObject();
nDC.DeleteDC();
ReleaseDC(pDC);
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CDDemoDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CDDemoDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nIDEvent = 1)
{
this->Invalidate(TRUE);
}
CDialog::OnTimer(nIDEvent);
}
BOOL CDDemoDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CDialog::OnEraseBkgnd(pDC);
return TRUE;
}