在使用VC开发项目过程当中,界面是项目中的一个子模块。虽然界面并不那么重要,把握住核心功能就能够了,但界面美观与否直接关系到用户的体验, 所以咱们也应该关注界面的处理。函数
咱们能够在OnEraseBkgnd处理函数中,利用GDI绘图与双缓冲技术来设置背景。spa
在下面的这个程序中,在OnEraseBkgnd处理函数中直接设置对话框的显示背景,下图是运行结果。code
经过建立一个和屏幕相关联的内存DC,并把位图选入内存DC中,而后在内存DC上进行绘图,绘图结束后把内存DC中的数据拷贝到屏幕DC,这样就能够在对话框上显示出设置好的背景。blog
BOOL CMyDlg::OnEraseBkgnd(CDC *pDC) { CDialog::OnEraseBkgnd(pDC); CRect RectWindow; //获取客户区域坐标 GetClientRect(&RectWindow); //建立内存DC HDC hMemDC = CreateCompatibleDC( pDC->GetSafeHdc() ); //建立位图 HBITMAP hBitmap = CreateCompatibleBitmap( pDC->GetSafeHdc(), RectWindow.Width(), RectWindow.Height() ); //把位图选入内存DC中 HBITMAP hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap ); //填充内存DC FillRect( hMemDC, &RectWindow, CreateSolidBrush( RGB(201, 201, 201) ) ); //把内存DC中的位图拷贝到窗口DC上 BitBlt( pDC->GetSafeHdc(), 0, 0 , RectWindow.Width(), RectWindow.Height(), hMemDC, 0, 0, SRCCOPY ); //清理工做 SelectObject( hMemDC, hOldBitmap ); DeleteDC( hMemDC ); DeleteObject( hBitmap ); return true; }