我给dialog加了一个背景图,dialog上面有CDateTimeCtrl、CButton等控件。
在类中定义了HBITMAP m_oBitmap;
在BOOL cTopDlg::OnInitDialog() 载入位图
{
。。。
m_oBitmap=(HBITMAP)::LoadImage(NULL, "D:\\tobBk.bmp", IMAGE_BITMAP,0, 0, LR_LOADFROMFILE);
Invalidate();
。。。
}
在OnPaint设置背景图片
///
CDialog::OnPaint();
CRect rect;
GetClientRect(&rect);
CClientDC dc(this);
CDC memDC;
CBitmap bmBkgnd;
bmBkgnd.Attach( m_oBitmap );
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );
BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm);
dc.StretchBlt(0, 0,rect.Width(),rect.Height(), &memDC, 0, 0,bm.bmWidth,bm.bmHeight, SRCCOPY );
memDC.SelectObject( pOldBm );
bmBkgnd.Detach();
///
运行后一切正常。可是当点击CDateTimeCtrl控件选择日期的时候,选择完后背景图片把窗体上的控件都盖住了。鼠标放上去才显示出来。
求解决方法。
我试了在不在OnPaint而在OnEraseBkgnd里面处理和在OnPaint处理,重载OnEraseBkgnd,让OnEraseBkgnd 直接返回TRUE,什么也不干,都不行。
在类中定义了HBITMAP m_oBitmap;
在BOOL cTopDlg::OnInitDialog() 载入位图
{
。。。
m_oBitmap=(HBITMAP)::LoadImage(NULL, "D:\\tobBk.bmp", IMAGE_BITMAP,0, 0, LR_LOADFROMFILE);
Invalidate();
。。。
}
在OnPaint设置背景图片
///
CDialog::OnPaint();
CRect rect;
GetClientRect(&rect);
CClientDC dc(this);
CDC memDC;
CBitmap bmBkgnd;
bmBkgnd.Attach( m_oBitmap );
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );
BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm);
dc.StretchBlt(0, 0,rect.Width(),rect.Height(), &memDC, 0, 0,bm.bmWidth,bm.bmHeight, SRCCOPY );
memDC.SelectObject( pOldBm );
bmBkgnd.Detach();
///
运行后一切正常。可是当点击CDateTimeCtrl控件选择日期的时候,选择完后背景图片把窗体上的控件都盖住了。鼠标放上去才显示出来。
求解决方法。
我试了在不在OnPaint而在OnEraseBkgnd里面处理和在OnPaint处理,重载OnEraseBkgnd,让OnEraseBkgnd 直接返回TRUE,什么也不干,都不行。